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);
}
}
}