// // Inheritance Methods // protected override void OnComponentRegistrationFinished() { base.OnComponentRegistrationFinished(); // Init UI elements zoomPanel = FindObjectOfType <ZoomPanel>(); backgrounds = FindObjectOfType <BackgroundsComponent>(); cellInspector = FindObjectOfType <CellInspector>(); var centerTopContainerT = GameObject.Find("CenterTopContainer").transform; collapseToggleLeft = centerTopContainerT.Find("ColapseToggleLeft").GetComponent <Toggle>(); collapseToggleRight = centerTopContainerT.Find("ColapseToggleRight").GetComponent <Toggle>(); collapseToggleDown = centerTopContainerT.Find("ColapseToggleDown").GetComponent <Toggle>(); footer = centerTopContainerT.Find("Footer"); legendPanel = footer.Find("LegendPanel").GetComponent <LegendPanel>(); toolbox = FindObjectOfType <Toolbox>(); siblingIndex = transform.GetSiblingIndex(); }
private static void BuildLegend(Type type, DataGrid grid, ResourceDictionary resources, Panel legend, string context) { if (legend == null) { return; } var labels = from p in type.GetProperties() from StyleAttribute a in p.GetCustomAttributes(typeof(StyleAttribute), true) where grid.Columns.Any(c => IsApplicable(c, a)) && (String.IsNullOrEmpty(a.Context) || context == a.Context) orderby a.Description let key = LegendKey(type, p) let style = resources[key] as Style where style != null select ConnectEdit(new Label { Style = style, Tag = "generated" + grid.Name, Name = a.GetName(p) + "LegendItem", }); if (legend.Children.Count == 0) { var header = new StackPanel { Orientation = Orientation.Horizontal }; header.Children.Add(new Label { Content = "Подсказка", Padding = new Thickness(5, 0, 5, 0), VerticalAlignment = VerticalAlignment.Center }); var toggleButton = new ToggleButton { Content = "+", ToolTip = "Свернуть\\развернуть", Padding = new Thickness(5, 0, 5, 0), Margin = new Thickness(0), Background = Brushes.Transparent, BorderBrush = Brushes.Transparent, Focusable = false, }; header.Children.Add(toggleButton); legend.Children.Add(header); var stack = new LegendPanel(); stack.BindTo <bool>("IsOverflow", toggleButton, ToggleButton.VisibilityProperty, x => x ? Visibility.Visible : Visibility.Collapsed); stack.BindTo <bool>("IsCollapsed", toggleButton, ToggleButton.ContentProperty, x => x ? "+" : "-"); toggleButton.BindTo <bool?>("IsChecked", stack, LegendPanel.IsCollapsedProperty, x => !x.GetValueOrDefault()); stack.Children.AddRange(labels); legend.Children.Add(stack); } else { //если пользовательские стили изменились нужно перестроить легенду var panel = legend.Children.OfType <LegendPanel>().First(); panel.Children.OfType <FrameworkElement>().Where(c => Equals("generated" + grid.Name, c.Tag)) .ToArray() .Each(c => panel.Children.Remove(c)); panel.Children.AddRange(labels); } }