Microsoft.Windows.Controls.Ribbon.RibbonGallery.OnFilterButtonItemContainerGeneratorStatusChanged C# (CSharp) Method

OnFilterButtonItemContainerGeneratorStatusChanged() private method

private OnFilterButtonItemContainerGeneratorStatusChanged ( object sender, EventArgs e ) : void
sender object
e System.EventArgs
return void
        private void OnFilterButtonItemContainerGeneratorStatusChanged(object sender, EventArgs e)
        {
            if (_filterMenuButton.ItemContainerGenerator.Status == GeneratorStatus.ContainersGenerated)
            {
                foreach (object filter in this._categoryFilters)
                {
                    RibbonMenuItem filterItem = _filterMenuButton.ItemContainerGenerator.ContainerFromItem(filter) as RibbonMenuItem;

                    // Bind filterItem.IsChecked to true when Object.ReferenceEquals(this.CurrentFilter, filterItem.DataContext).
                    MultiBinding isCheckedBinding = new MultiBinding();
                    isCheckedBinding.Converter = new ReferentialEqualityConverter();
                    Binding currentFilterBinding = new Binding("CurrentFilter") { Source = this };
                    Binding myHeaderBinding = new Binding("DataContext") { Source = filterItem };
                    isCheckedBinding.Bindings.Add(currentFilterBinding);
                    isCheckedBinding.Bindings.Add(myHeaderBinding);
                    filterItem.SetBinding(RibbonMenuItem.IsCheckedProperty, isCheckedBinding);

                    // Set up FilterCommand properties.
                    filterItem.Command = RibbonGallery.FilterCommand;

                    Binding commandParameterBinding = new Binding("DataContext") { RelativeSource = new RelativeSource(RelativeSourceMode.Self) };
                    filterItem.SetBinding(RibbonMenuItem.CommandParameterProperty, commandParameterBinding);
                }
            }
        }
RibbonGallery