コード例 #1
0
 protected override void OnContainersRecycled(ItemContainerEventArgs e)
 {
     foreach (var i in e.Containers)
     {
         if (i.ContainerControl != null && i.Item != null)
         {
             bool selected = Selection.IsSelected(i.Index);
             MarkContainerSelected(i.ContainerControl, selected);
         }
     }
 }
コード例 #2
0
 /// <summary>
 /// Called when containers are recycled for the <see cref="ItemsControl"/> by its
 /// <see cref="ItemContainerGenerator"/>.
 /// </summary>
 /// <param name="e">The details of the containers.</param>
 protected override void OnContainersRecycled(ItemContainerEventArgs e)
 {
     foreach (var i in e.Containers)
     {
         if (i.ContainerControl != null && i.Item != null)
         {
             MarkContainerSelected(
                 i.ContainerControl,
                 SelectedItems.Contains(i.Item));
         }
     }
 }
コード例 #3
0
        private void ItemContainerGenerator_Materialized(object sender, ItemContainerEventArgs e)
        {
            var tab = e.Containers.FirstOrDefault().Item as TabbedLayoutItem;

            if (tab != null)
            {
                if (tab.ClosePropertyTabCommand == null)
                {
                    tab.ClosePropertyTabCommand = ClosePropertyTabCommand;
                    tab.CanClose = true;
                }

                var item = tab.Content;

                //TODO: Assign PG as DataContext here?
                //tab.DataContext = item;

                var layout = item as IControl;
                if (!string.IsNullOrEmpty(ItemHeaderProperty))
                {
                    var bHeader = new Binding(ItemHeaderProperty)
                    {
                        Source = item,
                        Mode   = BindingMode.OneWay,
                    };

                    tab.Bind(HeaderedContentControl.HeaderProperty, bHeader);
                }
                else
                {
                    if (layout != null)
                    {
                        //tab.Header = GetHeader(layout);
                        //tab.CanClose = GetCanClose(layout);
                    }
                }

                if (item is GridEntry)
                {
                    //var binding = new Binding("IsVisible")
                    //{
                    //    Source = item,
                    //    Mode = BindingMode.OneWay,
                    //};
                    //tab.Bind(Visual.IsVisibleProperty, binding);
                }

                tab.PropertyChanged -= TabItem_PropertyChanged;
                tab.PropertyChanged += TabItem_PropertyChanged;
            }
        }
コード例 #4
0
 protected override void OnContainersMaterialized(ItemContainerEventArgs e)
 {
     base.OnContainersMaterialized(e);
     foreach (var item in e.Containers)
     {
         var container = item.ContainerControl as SharpTreeViewItem;
         container.ParentTreeView = this;
         // Make sure that the line renderer takes into account the new bound data
         if (container.NodeView != null)
         {
             container.NodeView.LinesRenderer.InvalidateVisual();
         }
     }
 }
コード例 #5
0
        protected override void OnContainersRecycled(ItemContainerEventArgs e)
        {
            foreach (var i in e.Containers)
            {
                if (i.ContainerControl != null && i.Item != null)
                {
                    var  ms       = MemberSelector;
                    bool selected = ms == null?
                                    SelectedItems.Contains(i.Item) :
                                        SelectedItems.OfType <object>().Any(v => Equals(ms.Select(v), i.Item));

                    MarkContainerSelected(i.ContainerControl, selected);
                }
            }
        }
コード例 #6
0
        /// <summary>
        /// Called when containers are dematerialized for the <see cref="ItemsControl"/> by its
        /// <see cref="ItemContainerGenerator"/>.
        /// </summary>
        /// <param name="e">The details of the containers.</param>
        protected override void OnContainersDematerialized(ItemContainerEventArgs e)
        {
            base.OnContainersDematerialized(e);

            var panel = (InputElement)Presenter.Panel;

            foreach (var container in e.Containers)
            {
                if (KeyboardNavigation.GetTabOnceActiveElement(panel) == container.ContainerControl)
                {
                    KeyboardNavigation.SetTabOnceActiveElement(panel, null);
                    break;
                }
            }
        }
コード例 #7
0
ファイル: ItemsControl.cs プロジェクト: liang0612/Avalonia
        /// <summary>
        /// Called when containers are recycled for the <see cref="ItemsControl"/> by its
        /// <see cref="ItemContainerGenerator"/>.
        /// </summary>
        /// <param name="e">The details of the containers.</param>
        protected virtual void OnContainersRecycled(ItemContainerEventArgs e)
        {
            var toRemove = new List <ILogical>();

            foreach (var container in e.Containers)
            {
                // If the item is its own container, then it will be removed from the logical tree
                // when it is removed from the Items collection.
                if (container?.ContainerControl != container?.Item)
                {
                    toRemove.Add(container.ContainerControl);
                }
            }

            LogicalChildren.RemoveAll(toRemove);
        }
コード例 #8
0
        /// <summary>
        /// updates selected content
        /// </summary>
        /// <param name="e"></param>
        protected override void OnContainersMaterialized(ItemContainerEventArgs e)
        {
            if (SelectedContent != null || SelectedIndex == -1)
            {
                return;
            }

            var container = ItemContainerGenerator.ContainerFromIndex(SelectedIndex) as TabItem;

            if (container == null)
            {
                return;
            }

            UpdateSelectedContent(container);
        }
コード例 #9
0
ファイル: ItemsControl.cs プロジェクト: skywalle/Avalonia
        /// <summary>
        /// Called when new containers are materialized for the <see cref="ItemsControl"/> by its
        /// <see cref="ItemContainerGenerator"/>.
        /// </summary>
        /// <param name="e">The details of the containers.</param>
        protected virtual void OnContainersMaterialized(ItemContainerEventArgs e)
        {
            var toAdd = new List <ILogical>();

            foreach (var container in e.Containers)
            {
                // If the item is its own container, then it will be added to the logical tree when
                // it was added to the Items collection.
                if (container.ContainerControl != null && container.ContainerControl != container.Item)
                {
                    toAdd.Add(container.ContainerControl);
                }
            }

            LogicalChildren.AddRange(toAdd);
        }
コード例 #10
0
        private static void ItemContainerGeneratorOnMaterialized(object?sender, ItemContainerEventArgs e)
        {
            var icg = sender as ItemContainerGenerator;

            if (icg == null)
            {
                return;
            }
            var ic = icg.Owner as ItemsControl;

            if (ic == null)
            {
                return;
            }
            UpdateSelected(ic, GetSelectedItem(ic));
        }
コード例 #11
0
        /// <inheritdoc/>
        protected override void OnContainersMaterialized(ItemContainerEventArgs e)
        {
            base.OnContainersMaterialized(e);

            foreach (var container in e.Containers)
            {
                if ((container.ContainerControl as ISelectable)?.IsSelected == true)
                {
                    Selection.Select(container.Index);
                    MarkContainerSelected(container.ContainerControl, true);
                }
                else
                {
                    var selected = Selection.IsSelected(container.Index);
                    MarkContainerSelected(container.ContainerControl, selected);
                }
            }
        }
コード例 #12
0
        /// <inheritdoc/>
        protected override void OnContainersMaterialized(ItemContainerEventArgs e)
        {
            base.OnContainersMaterialized(e);

            var selectedIndex     = SelectedIndex;
            var selectedContainer = e.Containers
                                    .FirstOrDefault(x => (x.ContainerControl as ISelectable)?.IsSelected == true);

            if (selectedContainer != null)
            {
                SelectedIndex = selectedContainer.Index;
            }
            else if (selectedIndex >= e.StartingIndex &&
                     selectedIndex < e.StartingIndex + e.Containers.Count)
            {
                var container = e.Containers[selectedIndex - e.StartingIndex];
                MarkContainerSelected(container.ContainerControl, true);
            }
        }
コード例 #13
0
        /// <summary>
        /// Called when a new item container is materialized, to set its selected state.
        /// </summary>
        /// <param name="sender">The event sender.</param>
        /// <param name="e">The event args.</param>
        private void ContainerMaterialized(object sender, ItemContainerEventArgs e)
        {
            var selectedItem = SelectedItem;

            if (selectedItem != null)
            {
                foreach (var container in e.Containers)
                {
                    if (container.Item == selectedItem)
                    {
                        ((TreeViewItem)container.ContainerControl).IsSelected = true;

                        if (AutoScrollToSelectedItem)
                        {
                            DispatcherTimer.RunOnce(
                                container.ContainerControl.BringIntoView,
                                TimeSpan.Zero);
                        }

                        break;
                    }
                }
            }
        }
コード例 #14
0
 ///<inheritdoc/>
 protected override void OnContainersDematerialized(ItemContainerEventArgs e)
 {
     base.OnContainersDematerialized(e);
     UpdateTitleAndSelectedContent();
 }
コード例 #15
0
        private void TreeViewItemMaterialized(object sender, ItemContainerEventArgs e)
        {
            var item = (TreeViewItem)e.Containers[0].ContainerControl;

            if (item.DataContext is SqlServerObjectModel sqlServer)
            {
                MenuItem change = new MenuItem {
                    Header = "Change"
                };
                change.Click += (x, y) => ViewModel.ChangeObject(sqlServer);
                MenuItem remove = new MenuItem {
                    Header = "Remove"
                };
                remove.Click          += (x, y) => ViewModel.RemoveObject(sqlServer);
                item.ContextMenu       = item.ContextMenu != null ? item.ContextMenu : new ContextMenu();
                item.ContextMenu.Items = new List <MenuItem> {
                    change, remove
                };
            }
            if (item.DataContext is MySqlObjectModel mySql)
            {
                MenuItem change = new MenuItem {
                    Header = "Change"
                };
                change.Click += (x, y) => ViewModel.ChangeObject(mySql);
                MenuItem remove = new MenuItem {
                    Header = "Remove"
                };
                remove.Click          += (x, y) => ViewModel.RemoveObject(mySql);
                item.ContextMenu       = item.ContextMenu != null ? item.ContextMenu : new ContextMenu();
                item.ContextMenu.Items = new List <MenuItem> {
                    change, remove
                };
            }
            if (item.DataContext is SqliteObjectModel sqlite)
            {
                MenuItem change = new MenuItem {
                    Header = "Change"
                };
                change.Click += (x, y) => ViewModel.ChangeObject(sqlite);
                MenuItem remove = new MenuItem {
                    Header = "Remove"
                };
                remove.Click          += (x, y) => ViewModel.RemoveObject(sqlite);
                item.ContextMenu       = item.ContextMenu != null ? item.ContextMenu : new ContextMenu();
                item.ContextMenu.Items = new List <MenuItem> {
                    change, remove
                };
            }
            if (item.DataContext is ElasticSearchObjectModel elastic)
            {
                MenuItem change = new MenuItem {
                    Header = "Change"
                };
                change.Click += (x, y) => ViewModel.ChangeObject(elastic);
                MenuItem remove = new MenuItem {
                    Header = "Remove"
                };
                remove.Click          += (x, y) => ViewModel.RemoveObject(elastic);
                item.ContextMenu       = item.ContextMenu != null ? item.ContextMenu : new ContextMenu();
                item.ContextMenu.Items = new List <MenuItem> {
                    change, remove
                };
            }
            if (item.DataContext is ITableObjectModel objectPath)
            {
                MenuItem generateSelect = new MenuItem {
                    Header = "Select query"
                };
                generateSelect.Click += (x, y) => ViewModel.GenerateSelectQuery(objectPath);
                MenuItem generate = new MenuItem {
                    Header = "Generate"
                };
                generate.Items = new List <MenuItem> {
                    generateSelect
                };
                item.ContextMenu       = item.ContextMenu != null ? item.ContextMenu : new ContextMenu();
                item.ContextMenu.Items = new List <MenuItem> {
                    generate
                };
            }
            if (item.ContextMenu == null)
            {
                item.ContextMenu           = new ContextMenu();
                item.ContextMenu.IsVisible = false;
            }

            if (item.DataContext is ITableObjectModel objectPath2 || item.DataContext is IFieldObjectModel objectField2)
            {
                item.PointerMoved += Item_PointerMoved;
            }
        }
コード例 #16
0
ファイル: NavigationView.cs プロジェクト: omerfarukz/Aura.UI
        protected override void OnContainersMaterialized(ItemContainerEventArgs e)
        {
            base.OnContainersMaterialized(e);

            UpdateSelectedTitle();
        }
コード例 #17
0
        private void TreeViewItemMaterialized(object?sender, ItemContainerEventArgs e)
        {
            var item = (TreeViewItem)e.Containers[0].ContainerControl;

            item.TemplateApplied += TreeViewItemTemplateApplied;
        }
コード例 #18
0
 protected override void OnContainersRecycled(ItemContainerEventArgs e)
 {
     base.OnContainersRecycled(e);
     UpdateSelectedContent();
 }
コード例 #19
0
 private void ItemContainerGenerator_Materialized(object sender, ItemContainerEventArgs e)
 {
 }