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); } } }
/// <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)); } } }
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; } }
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(); } } }
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); } } }
/// <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; } } }
/// <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); }
/// <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); }
/// <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); }
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)); }
/// <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); } } }
/// <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); } }
/// <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; } } } }
///<inheritdoc/> protected override void OnContainersDematerialized(ItemContainerEventArgs e) { base.OnContainersDematerialized(e); UpdateTitleAndSelectedContent(); }
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; } }
protected override void OnContainersMaterialized(ItemContainerEventArgs e) { base.OnContainersMaterialized(e); UpdateSelectedTitle(); }
private void TreeViewItemMaterialized(object?sender, ItemContainerEventArgs e) { var item = (TreeViewItem)e.Containers[0].ContainerControl; item.TemplateApplied += TreeViewItemTemplateApplied; }
protected override void OnContainersRecycled(ItemContainerEventArgs e) { base.OnContainersRecycled(e); UpdateSelectedContent(); }
private void ItemContainerGenerator_Materialized(object sender, ItemContainerEventArgs e) { }