private static void TargetUiElement_GotFocus(object sender, RoutedEventArgs e) { if (sender is TextBox) { TextBox tx = sender as TextBox; object parent = FindAncestorByType(tx, typeof(GenLibrary.GenControls.TreeListViewItem), false); if (parent is GenLibrary.GenControls.TreeListViewItem) { GenLibrary.GenControls.TreeListViewItem item = parent as GenLibrary.GenControls.TreeListViewItem; if (item.Header is MVVM.TreeListView.TreeListViewItemViewModel) { MVVM.TreeListView.TreeListViewItemViewModel header = item.Header as MVVM.TreeListView.TreeListViewItemViewModel; header.IsSelected = true; } } } }
static void TargetUiElement_IsKeyboardFocusWithinChanged(object sender, DependencyPropertyChangedEventArgs e) { var targetUiElement = (UIElement)sender; if (targetUiElement is GenControls.TreeListViewItem) //让其支持TreeListView { GenControls.TreeListViewItem trItem = targetUiElement as GenControls.TreeListViewItem; if (trItem.Header is MVVM.TreeListView.TreeListViewItemViewModel) { MVVM.TreeListView.TreeListViewItemViewModel header = trItem.Header as MVVM.TreeListView.TreeListViewItemViewModel; header.IsSelected = true; } } else { ListBox.SetIsSelected(targetUiElement, true); //设置选择,可用于datagrid/treeview等其他类型,仅仅适合于单选 } }
private static void Item_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { if (sender is GenControls.TreeListView) { GenControls.TreeListView item = sender as GenControls.TreeListView; if (item.DataContext != null) { if (item.DataContext is MVVM.TreeListView.TreeListViewItemViewModel) { MVVM.TreeListView.TreeListViewItemViewModel data = item.DataContext as MVVM.TreeListView.TreeListViewItemViewModel; if (data.Children.Count > 0) { data.Children[0].IsNotRootFirst = false; } } } } }