public MyBehavior(CheckBox source) { this.checkBox = source; this.checkBox.Unloaded += checkBox_Unloaded; checkBox.Dispatcher.BeginInvoke(new Action (() => { grid = checkBox.ParentOfType<RadGridView>(); groupRow = checkBox.ParentOfType<GridViewGroupRow>(); if (grid != null && groupRow != null) { groupRow.Unloaded += groupRow_Unloaded; this.UpdateIsChecked(groupRow.Group); } if (grid != null) { grid.SelectionMode = System.Windows.Controls.SelectionMode.Extended; grid.SelectionUnit = GridViewSelectionUnit.FullRow; 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); }; } } )); }
public MyBehavior(CheckBox source) { this.checkBox = source; this.checkBox.Unloaded += checkBox_Unloaded; checkBox.Dispatcher.BeginInvoke(new Action (() => { grid = checkBox.ParentOfType <RadGridView>(); groupRow = checkBox.ParentOfType <GridViewGroupRow>(); if (grid != null && groupRow != null) { groupRow.Unloaded += groupRow_Unloaded; this.UpdateIsChecked(groupRow.Group); } if (grid != null) { grid.SelectionMode = System.Windows.Controls.SelectionMode.Extended; grid.SelectionUnit = GridViewSelectionUnit.FullRow; 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); }; } } )); }
private void ScrollToContentOnExpand(GridViewGroupRow groupRow) { var group = groupRow.GetValue(GroupRowPropertySupplier.GroupRecordInfoProperty) as GroupRecord; if (group != null && group.IsAttached && group.IsExpanded && !_openedGroups.Contains(group.GroupCode) && ((IList)group.Items).Count > 0) { _openedGroups = null; if (group.Items.OfType<IGroup>().Any()) { var scrollViewer = SearchList.ChildrenOfType<GridViewScrollViewer>().FirstOrDefault(); if (scrollViewer != null) { var contentPresenter = groupRow.FindChildByType<ContentPresenter>(); if (contentPresenter != null) { GeneralTransform visualTransform = contentPresenter.TransformToVisual(scrollViewer); Rect rectangle = visualTransform.TransformBounds( new Rect(new Point(contentPresenter.Margin.Left, contentPresenter.Margin.Top), contentPresenter.RenderSize)); var newOffset = scrollViewer.VerticalOffset + Math.Max(0, rectangle.Top - (scrollViewer.VerticalOffset + scrollViewer.ViewportHeight / 2)); scrollViewer.ScrollToVerticalOffset(newOffset); } } } else SearchList.ScrollIntoView(((IList)group.Items)[0]); } }
/// <summary> /// Method to catch click event to open context menu /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void RadContextMenu_Opened(object sender, RoutedEventArgs e) { if (sender == null || e == null) { return; } RadContextMenu menu = (RadContextMenu)sender; if (menu == null) { return; } GridViewRow row = menu.GetClickedElement <GridViewRow>(); GridViewGroupRow groupRow = menu.GetClickedElement <GridViewGroupRow>(); GridViewHeaderRow headerRow = menu.GetClickedElement <GridViewHeaderRow>(); if (row != null) { row.IsSelected = row.IsCurrent = true; (menu.Items[0] as RadMenuItem).IsEnabled = true; (menu.Items[1] as RadMenuItem).IsEnabled = true; (menu.Items[2] as RadMenuItem).IsEnabled = true; (menu.Items[3] as RadMenuItem).IsEnabled = true; return; } if (groupRow != null) { (menu.Items[0] as RadMenuItem).IsEnabled = true; (menu.Items[1] as RadMenuItem).IsEnabled = true; (menu.Items[2] as RadMenuItem).IsEnabled = true; (menu.Items[3] as RadMenuItem).IsEnabled = false; if (!(groupRow.Group.Key is string)) { return; } string groupName = groupRow.Group.Key as string; int itemCount = 0; foreach (MarketSnapshotPerformanceData item in this.radGridSnapshot.Items) { if (item.MarketSnapshotPreferenceInfo.GroupName == groupName && item.MarketSnapshotPreferenceInfo.EntityOrder == 1) { this.radGridSnapshot.SelectedItem = item; return; } itemCount++; } return; } if (headerRow != null) { (menu.Items[0] as RadMenuItem).IsEnabled = true; (menu.Items[1] as RadMenuItem).IsEnabled = false; (menu.Items[2] as RadMenuItem).IsEnabled = false; (menu.Items[3] as RadMenuItem).IsEnabled = false; return; } menu.IsOpen = false; }
private void GridViewGroupRow_Loaded(object sender, RoutedEventArgs args) { GridViewGroupRow groupRow = (GridViewGroupRow)args.OriginalSource; groupRow.IsExpanded = true; }