Category / Section
How to Set SfRadialMenu as the Context menu for the SfDataGrid ?
1 min read
SfRadialMenu can be used as context menu of the SfDataGrid by set the SfRadialMenu as ControlTemplate of ContextMenu. The same has been explained in the below “HeaderContext” style.
<Style x:Key="Headercontext" TargetType="ContextMenu"> <Setter Property="Template"> <Setter.Value> <ControlTemplate> <syncfusion:SfRadialMenu> <syncfusion:SfRadialMenuItem Header="Ascending" Command="{Binding Source={x:Static Member=local:ContextMenuCommands.SortAscending}}" CommandParameter="{Binding}"/> <syncfusion:SfRadialMenuItem Header="Descending" Command="{Binding Source={x:Static Member=local:ContextMenuCommands.SortDescending}}" CommandParameter="{Binding}"/> </syncfusion:SfRadialMenu> </ControlTemplate> </Setter.Value> </Setter> </Style>
Ascending and Descending command functions
#region SortAscending static BaseCommand sortAscending; public static BaseCommand SortAscending { get { if (sortAscending == null) sortAscending = new BaseCommand(OnSortAscendingClicked, CanSortAscending); return sortAscending; } } private static void OnSortAscendingClicked(object obj) { if (obj is GridColumnContextMenuInfo) { var grid = (obj as GridContextMenuInfo).DataGrid; var column = (obj as GridColumnContextMenuInfo).Column; grid.SortColumnDescriptions.Clear(); grid.SortColumnDescriptions.Add(new SortColumnDescription() { ColumnName = column.MappingName, SortDirection = ListSortDirection.Ascending }); } } private static bool CanSortAscending(object obj) { if (obj is GridColumnContextMenuInfo) { var grid = (obj as GridContextMenuInfo).DataGrid; var column = (obj as GridColumnContextMenuInfo).Column; var sortColumn = grid.SortColumnDescriptions.FirstOrDefault(x => x.ColumnName == column.MappingName); if (sortColumn != null) { if ((sortColumn as SortColumnDescription).SortDirection == ListSortDirection.Ascending) return false; } return grid.AllowSorting; } return false; } #endregion #region SortDescending static BaseCommand sortDescending; public static BaseCommand SortDescending { get { if (sortDescending == null) sortDescending = new BaseCommand(OnSortDescendingClicked, CanSortDescending); return sortDescending; } } private static void OnSortDescendingClicked(object obj) { if (obj is GridColumnContextMenuInfo) { var grid = (obj as GridContextMenuInfo).DataGrid; var column = (obj as GridColumnContextMenuInfo).Column; grid.SortColumnDescriptions.Clear(); grid.SortColumnDescriptions.Add(new SortColumnDescription() { ColumnName = column.MappingName, SortDirection = ListSortDirection.Descending }); } } private static bool CanSortDescending(object obj) { if (obj is GridColumnContextMenuInfo) { var grid = (obj as GridContextMenuInfo).DataGrid; var column = (obj as GridColumnContextMenuInfo).Column; var sortColumn = grid.SortColumnDescriptions.FirstOrDefault(x => x.ColumnName == column.MappingName); if (sortColumn != null) { if ((sortColumn as SortColumnDescription).SortDirection == ListSortDirection.Descending) return false; } return grid.AllowSorting; } return false; } #endregion