private void RadContextMenu_ItemClick(object sender, RadRoutedEventArgs e) { RadContextMenu menu = (RadContextMenu)sender; RadMenuItem clickedItem = e.OriginalSource as RadMenuItem; GridViewRow row = menu.GetClickedElement <GridViewRow>(); GroupHeaderRow groupHeaderRow = menu.GetClickedElement <GroupHeaderRow>(); if (clickedItem != null && row != null) { string header = Convert.ToString(clickedItem.Header); switch (header) { case "Add": gridView.BeginInsert(); break; case "Edit": gridView.BeginEdit(); break; case "Delete": gridView.Items.Remove(row.DataContext); break; default: break; } } else if (clickedItem != null && groupHeaderRow != null) { string header = Convert.ToString(clickedItem.Header); switch (header) { case "Delete": var group = groupHeaderRow.DataContext as QueryableCollectionViewGroup; var items = group.Items.ToList(); foreach (var item in items) { gridView.Items.Remove(item); } break; default: break; } } }
private void RadContextMenu_Opened(object sender, RoutedEventArgs e) { RadContextMenu menu = (RadContextMenu)sender; GridViewRow row = menu.GetClickedElement <GridViewRow>(); GroupHeaderRow groupHeaderRow = menu.GetClickedElement <GroupHeaderRow>(); if (row != null && !row.IsInEditMode) { menu.Items.Clear(); RadMenuItem item = new RadMenuItem(); item.Header = "Add"; menu.Items.Add(item); item = new RadMenuItem(); item.Header = "Edit"; menu.Items.Add(item); item = new RadMenuItem(); item.Header = "Delete"; menu.Items.Add(item); row.IsSelected = row.IsCurrent = true; GridViewCell cell = menu.GetClickedElement <GridViewCell>(); if (cell != null) { cell.IsCurrent = true; } } else if (groupHeaderRow != null) { menu.Items.Clear(); RadMenuItem item = new RadMenuItem(); item.Header = "Delete"; menu.Items.Add(item); } else { menu.IsOpen = false; } }
public MyBehavior(CheckBox source) { this.checkBox = source; this.checkBox.Unloaded += checkBox_Unloaded; checkBox.Dispatcher.BeginInvoke(new Action (() => { grid = checkBox.ParentOfType <RadGridView>(); groupRow = checkBox.ParentOfType <GroupHeaderRow>(); if (grid != null && groupRow != null && groupRow.Group != null) { groupRow.Unloaded += groupRow_Unloaded; this.UpdateIsChecked(groupRow.Group); } if (grid != null) { checkBox.Click += clickHandler = (s, e) => { grid.SelectionChanged -= grid_SelectionChanged; if (checkBox.IsChecked == true) { grid.Select(this.GetSubGroupItems(((GroupViewModel)checkBox.DataContext).Group)); } else { grid.Unselect(this.GetSubGroupItems(((GroupViewModel)checkBox.DataContext).Group)); } grid.SelectionChanged += grid_SelectionChanged; }; groupRow.DataContextChanged += dataContextChangedHandler = (s, e) => { this.UpdateIsChecked(e.NewValue as IGroup); }; } } )); }