Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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;
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
0
 private void GetGridViewHeaderPresenter()
 {
     if (Target == null)
     {
         _headerRowPresenter = null;
         return;
     }
     _headerRowPresenter = Target.GetDesendentChild <GridViewHeaderRowPresenter>();
 }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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;
            }
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        // 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);
            }
        }
Ejemplo n.º 8
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));
 }
Ejemplo n.º 29
0
        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));
 }