/// <summary> /// When overridden in a derived class, is invoked whenever /// application code or internal processes call ApplyTemplate /// </summary> public override void OnApplyTemplate() { groupsMenuButton = GetTemplateChild("PART_DropDownButton") as DropDownButton; if (groupsMenuButton != null) { for (int i = 0; i < Filters.Count; i++) { MenuItem item = new MenuItem(); item.Text = Filters[i].Title; item.Tag = Filters[i]; if (Filters[i] == SelectedFilter) item.IsChecked = true; item.Click += OnFilterMenuItemClick; groupsMenuButton.Items.Add(item); } } if (listBox != null) { listBox.ItemContainerGenerator.StatusChanged -= OnItemsContainerGeneratorStatusChanged; } listBox = GetTemplateChild("PART_ListBox") as RibbonListBox; if (listBox != null) { listBox.SelectedIndex = SelectedIndex; listBox.SelectedItem = SelectedItem; listBox.SelectionChanged += OnListBoxSelectionChanged; /*Binding binding = new Binding("SelectedIndex"); binding.Source = listBox; binding.Mode = BindingMode.TwoWay; binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; SetBinding(SelectedIndexProperty, binding); binding = new Binding("SelectedItem"); binding.Source = listBox; binding.Mode = BindingMode.TwoWay; binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; SetBinding(SelectedItemProperty, binding);*/ Binding binding = new Binding("HasItems"); binding.Source = listBox; binding.Mode = BindingMode.OneWay; SetBinding(HasItemsProperty, binding); binding = new Binding("IsGrouping"); binding.Source = listBox; binding.Mode = BindingMode.OneWay; SetBinding(IsGroupingProperty, binding); binding = new Binding("ItemContainerGenerator"); binding.Source = listBox; binding.Mode = BindingMode.OneWay; SetBinding(ItemContainerGeneratorProperty, binding); listBox.ItemContainerGenerator.StatusChanged += OnItemsContainerGeneratorStatusChanged; } UpdateGroupBy(GroupBy); SetMinWidth(); }
/// <summary> /// When overridden in a derived class, is invoked whenever application /// code or internal processes call ApplyTemplate /// </summary> public override void OnApplyTemplate() { if (listBox != null) { listBox.SelectionChanged -= OnListBoxSelectionChanged; listBox.ItemContainerGenerator.StatusChanged -= OnItemsContainerGeneratorStatusChanged; listBox.ItemsSource = null; } listBox = GetTemplateChild("PART_ListBox") as RibbonListBox; if (listBox != null) { Bind(this,listBox,"View.View",ListBox.ItemsSourceProperty,BindingMode.OneWay); listBox.SelectedItem = SelectedItem; if (SelectedIndex!=-1) listBox.SelectedIndex = SelectedIndex; listBox.SelectionChanged += OnListBoxSelectionChanged; listBox.ItemContainerGenerator.StatusChanged += OnItemsContainerGeneratorStatusChanged; } if (expandButton != null) expandButton.Click -= OnExpandClick; expandButton = GetTemplateChild("PART_ExpandButton") as ToggleButton; if (expandButton != null) expandButton.Click += OnExpandClick; if (dropDownButton != null) dropDownButton.Click -= OnDropDownClick; dropDownButton = GetTemplateChild("PART_DropDownButton") as ToggleButton; if (dropDownButton != null) dropDownButton.Click += OnDropDownClick; layoutRoot = GetTemplateChild("PART_LayoutRoot") as Panel; // Clear cache then style changed cachedWidthDelta = 0; }