public static double GetHeaderHeight(ListView listView, int column) { GridViewHeaderRowPresenter presenter = GetDescendantByType(listView, typeof(GridViewHeaderRowPresenter)) as GridViewHeaderRowPresenter; GridViewColumnHeader header = VisualTreeHelper.GetChild(presenter, column) as GridViewColumnHeader; return(header.ActualHeight); }
public static void UpdateFilterPanel(ListView listView, ColumnInfo[] columns, ColumnFilter[] filters) { Func <ColumnFilter, MenuItem> createMenuItem = f => { var style = listView.FindResource("ListViewExHeaderMenuItemHeaderStyle") as Style; var retVal = new MenuItem() { IsCheckable = true, Style = style, Header = f, DataContext = f }; retVal.SetBinding(MenuItem.IsCheckedProperty, new Binding("IsChecked")); return(retVal); }; if (columns == null) { return; } GridViewHeaderRowPresenter presenter = UITools.FindVisualChild <GridViewHeaderRowPresenter>(listView); if (presenter != null) { foreach (var col in columns) { GridViewColumnHeader foundHeader = findColumnHeader(presenter, col); if (foundHeader != null) { var dropDown = UITools.FindVisualChildByName <DropDown>(foundHeader, "PART_DropDown"); if (dropDown != null) { StackPanel sp = new StackPanel() { Name = "PART_Menu", DataContext = col }; foreach (var f in filters) { if (f.ValuePath == col.ValuePath) { sp.Children.Add(createMenuItem(f)); } } if (sp.Children.Count > 0) { dropDown.Content = sp; } else { dropDown.Content = null; } } } } } }
private void GetGridViewHeaderPresenter() { if (Target == null) { _headerRowPresenter = null; return; } _headerRowPresenter = Target.GetDesendentChild <GridViewHeaderRowPresenter>(); }
public static GridViewColumnHeader GetHeaderColimn(ListView listView, string propertyName) { GridViewHeaderRowPresenter presenter = GetDescendantByType(listView, typeof(GridViewHeaderRowPresenter)) as GridViewHeaderRowPresenter; GridView gridView = listView.View as GridView; for (int i = 0; i < gridView.Columns.Count; i++) { GridViewColumnHeader header = VisualTreeHelper.GetChild(presenter, i) as GridViewColumnHeader; GridViewColumn colunmn = header.Column; if (colunmn != null && colunmn.Header.ToString() == propertyName) { return(header); } } return(null); }
private static void SetGlyphForInitialSort(ListView listView) { if (!GetAutoSort(listView) || !GetShowSortGlyph(listView)) { return; } ICollectionView view = CollectionViewSource.GetDefaultView(listView.Items); if (!view.SortDescriptions.Any()) { return; } GridViewHeaderRowPresenter headerRow = listView.FindDescendants <GridViewHeaderRowPresenter>().FirstOrDefault(); if (headerRow == null) { return; } SortDescription sort = view.SortDescriptions.First(); IEnumerable <GridViewColumnHeader> headers = headerRow.FindDescendants <GridViewColumnHeader>(); foreach (GridViewColumnHeader header in headers) { if (header.Column == null) { continue; } string sortPropertyName = GetSortPropertyName(header.Column); if (sortPropertyName != sort.PropertyName) { continue; } AddSortGlyph( header, sort.Direction, sort.Direction == ListSortDirection.Ascending ? GetSortGlyphAscending(listView) : GetSortGlyphDescending(listView)); SetSortedColumnHeader(listView, header); break; } }
private static GridViewColumnHeader findColumnHeader(GridViewHeaderRowPresenter headerPresenter, ColumnInfo col) { Func <TextBlock, bool> filter = tb => { var value = tb.GetValue(TextBlock.TextProperty); var match = col.Header != null && col.Header.Equals(value); return(match); }; GridViewColumnHeader foundHeader = null; TextBlock lookup = UITools.FindVisualChild <TextBlock>(headerPresenter, filter); if (lookup != null) { foundHeader = lookup.FindAncestor <GridViewColumnHeader>(); } return(foundHeader); }
// workaround an issue that the gridline is not aligned with header // this is due to different margin setting in GridViewHeaderRowPresenter, in different system themes. // when the template is changed, we explictly clear the margin value on GridViewHeaderRowPresenter private void OnLoaded(object sender, RoutedEventArgs e) { if (!IsVisible) { // only handle this when everything is visible return; } if (!this.themeChanged) { // only change once per theme return; } this.themeChanged = false; GridViewHeaderRowPresenter headerPresenter = null; // locate the header control by iterating the child element of the listview // this may not be cheap however, we only do this occasionally (when a theme changes, for example) Queue <DependencyObject> children = new Queue <DependencyObject>(); children.Enqueue(this); while (headerPresenter == null && children.Count > 0) { DependencyObject child = children.Dequeue(); headerPresenter = child as GridViewHeaderRowPresenter; int count = VisualTreeHelper.GetChildrenCount(child); if (count > 0) { for (int i = 0; i < count; i++) { children.Enqueue(VisualTreeHelper.GetChild(child, i)); } } } if (headerPresenter != null) { headerPresenter.Margin = new Thickness(0, 0, 0, 0); } }
/// <summary> /// Apply header template to GridViewColumns depending if it's selected and ascending. /// </summary> public static void UpdateSortSymbol(ListView listView, ColumnInfo sortCol, ListSortDirection sortDirection = ListSortDirection.Ascending) { GridViewColumnCollection columns = getColumnCols(listView); if (columns == null) { return; } GridViewHeaderRowPresenter presenter = UITools.FindVisualChild <GridViewHeaderRowPresenter>(listView); if (presenter != null) { GridViewColumnHeader foundHeader = findColumnHeader(presenter, sortCol); IEnumerable <GridViewColumnHeader> headers = UITools.FindAllVisualChildren <GridViewColumnHeader>(presenter); foreach (var curHeader in headers) { if (curHeader.Equals(foundHeader)) { if (sortDirection == ListSortDirection.Ascending) { ListViewEx.SetColumnHeaderSortDirection(curHeader, -1); } else { ListViewEx.SetColumnHeaderSortDirection(curHeader, 1); } } else { ListViewEx.SetColumnHeaderSortDirection(curHeader, 0); } } } }
/// public GridViewHeaderRowPresenterAutomationPeer(GridViewHeaderRowPresenter owner) : base(owner) { }
public static IObservable <EventPattern <MouseButtonEventArgs> > PreviewMouseUpObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <MouseButtonEventHandler, MouseButtonEventArgs>(h => This.PreviewMouseUp += h, h => This.PreviewMouseUp -= h)); }
public static IObservable <EventPattern <ToolTipEventArgs> > ToolTipClosingObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <ToolTipEventHandler, ToolTipEventArgs>(h => This.ToolTipClosing += h, h => This.ToolTipClosing -= h)); }
public static IObservable <EventPattern <ManipulationBoundaryFeedbackEventArgs> > ManipulationBoundaryFeedbackObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <EventHandler <ManipulationBoundaryFeedbackEventArgs>, ManipulationBoundaryFeedbackEventArgs>(h => This.ManipulationBoundaryFeedback += h, h => This.ManipulationBoundaryFeedback -= h)); }
public static IObservable <EventPattern <DependencyPropertyChangedEventArgs> > FocusableChangedObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <DependencyPropertyChangedEventHandler, DependencyPropertyChangedEventArgs>(h => This.FocusableChanged += h, h => This.FocusableChanged -= h)); }
public static IObservable <EventPattern <EventArgs> > LayoutUpdatedObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <EventHandler, EventArgs>(h => This.LayoutUpdated += h, h => This.LayoutUpdated -= h)); }
public static IObservable <EventPattern <KeyboardFocusChangedEventArgs> > PreviewLostKeyboardFocusObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <KeyboardFocusChangedEventHandler, KeyboardFocusChangedEventArgs>(h => This.PreviewLostKeyboardFocus += h, h => This.PreviewLostKeyboardFocus -= h)); }
public static IObservable <EventPattern <TouchEventArgs> > TouchLeaveObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <EventHandler <TouchEventArgs>, TouchEventArgs>(h => This.TouchLeave += h, h => This.TouchLeave -= h)); }
public static IObservable <EventPattern <RoutedEventArgs> > UnloadedObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <RoutedEventHandler, RoutedEventArgs>(h => This.Unloaded += h, h => This.Unloaded -= h)); }
public static IObservable <EventPattern <SizeChangedEventArgs> > SizeChangedObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <SizeChangedEventHandler, SizeChangedEventArgs>(h => This.SizeChanged += h, h => This.SizeChanged -= h)); }
public static IObservable <EventPattern <RoutedEventArgs> > LostFocusObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <RoutedEventHandler, RoutedEventArgs>(h => This.LostFocus += h, h => This.LostFocus -= h)); }
public static IObservable <EventPattern <TextCompositionEventArgs> > TextInputObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <TextCompositionEventHandler, TextCompositionEventArgs>(h => This.TextInput += h, h => This.TextInput -= h)); }
public static IObservable <EventPattern <ManipulationInertiaStartingEventArgs> > ManipulationInertiaStartingObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <EventHandler <ManipulationInertiaStartingEventArgs>, ManipulationInertiaStartingEventArgs>(h => This.ManipulationInertiaStarting += h, h => This.ManipulationInertiaStarting -= h)); }
public static IObservable <EventPattern <QueryContinueDragEventArgs> > QueryContinueDragObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <QueryContinueDragEventHandler, QueryContinueDragEventArgs>(h => This.QueryContinueDrag += h, h => This.QueryContinueDrag -= h)); }
public static IObservable <EventPattern <ManipulationCompletedEventArgs> > ManipulationCompletedObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <EventHandler <ManipulationCompletedEventArgs>, ManipulationCompletedEventArgs>(h => This.ManipulationCompleted += h, h => This.ManipulationCompleted -= h)); }
public static IObservable <EventPattern <GiveFeedbackEventArgs> > GiveFeedbackObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <GiveFeedbackEventHandler, GiveFeedbackEventArgs>(h => This.GiveFeedback += h, h => This.GiveFeedback -= h)); }
public static IObservable <EventPattern <ContextMenuEventArgs> > ContextMenuClosingObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <ContextMenuEventHandler, ContextMenuEventArgs>(h => This.ContextMenuClosing += h, h => This.ContextMenuClosing -= h)); }
public static IObservable <EventPattern <DragEventArgs> > PreviewDragLeaveObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <DragEventHandler, DragEventArgs>(h => This.PreviewDragLeave += h, h => This.PreviewDragLeave -= h)); }
public static IObservable <EventPattern <MouseButtonEventArgs> > MouseLeftButtonDownObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <MouseButtonEventHandler, MouseButtonEventArgs>(h => This.MouseLeftButtonDown += h, h => This.MouseLeftButtonDown -= h)); }
public static IObservable <EventPattern <DragEventArgs> > DropObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <DragEventHandler, DragEventArgs>(h => This.Drop += h, h => This.Drop -= h)); }
public ProgramTreeControl() { InitializeComponent(); this.hdrDescr.Content = Translate.fmt("lbl_descr"); this.hdrCat.Content = Translate.fmt("lbl_log_type"); this.hdrAccess.Content = Translate.fmt("lbl_access"); this.hdrRules.Content = Translate.fmt("lbl_rules"); this.hdrAllowed.Content = Translate.fmt("filter_recent_allowed"); this.hdrBlocked.Content = Translate.fmt("filter_recent_blocked"); this.hdrActivity.Content = Translate.fmt("sort_act"); this.hdrSockets.Content = Translate.fmt("lbl_socks"); this.hdrUpRate.Content = Translate.fmt("lbl_upload"); this.hdrDownRate.Content = Translate.fmt("lbl_download"); this.hdrUpTotal.Content = Translate.fmt("lbl_uploaded"); this.hdrDownTotal.Content = Translate.fmt("lbl_downloaded"); this.hdrProg.Content = Translate.fmt("lbl_program"); treeView.Loaded += (sender, e) => { headerPresenter = WpfFunc.FindChild <GridViewHeaderRowPresenter>(treeView); if (headerPresenter == null) { return; } allColumns = headerPresenter.Columns.Cast <GridViewColumn>().ToArray(); Restore(App.GetConfig("GUI", "progTree_Columns", "")); headerMenu = new ContextMenu(); ContextMenuService.SetContextMenu(headerPresenter, headerMenu); if (headerMenu.Items.Count == 0) { CreateHeaderMenu(); } }; treeView.Root = root = new ProgTreeRoot(""); treeView.ShowRoot = false; treeView.ShowLines = false; treeView.PreviewKeyDown += TreeView_KeyDown; var contextMenu = new ContextMenu(); menuAdd = WpfFunc.AddMenu(contextMenu, Translate.fmt("btn_add_prog"), null, TryFindResource("Icon_Plus")); menuAddSub = WpfFunc.AddMenu(contextMenu, Translate.fmt("btn_add_to_set"), null, TryFindResource("Icon_Plus")); contextMenu.Items.Add(new Separator()); menuRemove = WpfFunc.AddMenu(contextMenu, Translate.fmt("btn_del_progs"), null, TryFindResource("Icon_Remove")); contextMenu.Items.Add(new Separator()); menuMerge = WpfFunc.AddMenu(contextMenu, Translate.fmt("btn_merge_progs"), null, TryFindResource("Icon_Merge")); menuSplit = WpfFunc.AddMenu(contextMenu, Translate.fmt("btn_split_progs"), null, TryFindResource("Icon_Split")); contextMenu.Items.Add(new Separator()); menuAccess = WpfFunc.AddMenu(contextMenu, Translate.fmt("btn_access_prog"), null, TryFindResource("Icon_NetAccess")); menuAccessNone = WpfFunc.AddMenu(menuAccess, Translate.fmt("acl_none"), null, null, ProgramSet.Config.AccessLevels.Unconfigured); menuAccessAllow = WpfFunc.AddMenu(menuAccess, Translate.fmt("acl_allow"), null, null, ProgramSet.Config.AccessLevels.FullAccess); menuAccessCustom = WpfFunc.AddMenu(menuAccess, Translate.fmt("acl_edit"), null, null, ProgramSet.Config.AccessLevels.CustomConfig); //menuAccessIn = WpfFunc.AddMenu(menuAccess, Translate.fmt("acl_inbound"), null, null, ProgramSet.Config.AccessLevels.InBoundAccess); //menuAccessOut = WpfFunc.AddMenu(menuAccess, Translate.fmt("acl_outbound"), null, null, ProgramSet.Config.AccessLevels.OutBoundAccess); menuAccessLan = WpfFunc.AddMenu(menuAccess, Translate.fmt("acl_lan"), null, null, ProgramSet.Config.AccessLevels.LocalOnly); menuAccessBlock = WpfFunc.AddMenu(menuAccess, Translate.fmt("acl_block"), null, null, ProgramSet.Config.AccessLevels.BlockAccess); foreach (MenuItem item in menuAccess.Items) { item.Background = ProgramControl.GetAccessColor((ProgramSet.Config.AccessLevels)item.Tag); //item.IsCheckable = true; } menuNotify = WpfFunc.AddMenu(contextMenu, Translate.fmt("lbl_notify"), null); menuNotify.IsCheckable = true; contextMenu.Items.Add(new Separator()); menuRename = WpfFunc.AddMenu(contextMenu, Translate.fmt("btn_rename_prog"), null, TryFindResource("Icon_Rename")); menuSetIcon = WpfFunc.AddMenu(contextMenu, Translate.fmt("btn_icon_prog"), null, TryFindResource("Icon_SetIcon")); menuCategory = WpfFunc.AddMenu(contextMenu, Translate.fmt("btn_cat_prog"), null, TryFindResource("Icon_Category")); treeView.ContextMenu = contextMenu; }
public static IObservable <EventPattern <TouchEventArgs> > PreviewTouchDownObserver(this GridViewHeaderRowPresenter This) { return(Observable.FromEventPattern <EventHandler <TouchEventArgs>, TouchEventArgs>(h => This.PreviewTouchDown += h, h => This.PreviewTouchDown -= h)); }