private void filterMenuButton_Loaded(object sender, RoutedEventArgs e)
{
_filterMenuButton.Loaded -= new RoutedEventHandler(filterMenuButton_Loaded);
RibbonToggleButton filterToggleButton = _filterMenuButton.Template.FindName(RibbonMenuButton.ToggleButtonTemplatePartName, _filterMenuButton) as RibbonToggleButton;
if (filterToggleButton != null)
{
Binding currentFilterBinding = new Binding("CurrentFilter") { Source = this };
filterToggleButton.SetBinding(RibbonToggleButton.ContentProperty, currentFilterBinding);
// Find the RibbonMenuItem for the filter itself so that we can template it.
// We need to set the following bindings on it:
// - DataContext --> CurrentFilter
// - Style --> CurrentFilterStyle
// - Header --> CurrentFilterHeader (plus some extra handling for when CurrentFilterHeader is of type BindingBase; see its coercion)
// - Template --> CurrentFilterTemplate
_currentFilterItem = filterToggleButton.Template.FindName("CurrentFilterItem", filterToggleButton) as RibbonMenuItem;
if (_currentFilterItem != null)
{
// DataContext --> CurrentFilter
_currentFilterItem.SetBinding(RibbonMenuItem.DataContextProperty, currentFilterBinding);
// Style --> CurrentFilterStyle
Binding currentFilterStyleBinding = new Binding("CurrentFilterStyle") { Source = this };
_currentFilterItem.SetBinding(RibbonMenuItem.StyleProperty, currentFilterStyleBinding);
// Header --> CurrentFilterHeader
this.SetHeaderBindingForCurrentFilterItem();
// Template --> CurrentFilterTemplate
this.SetTemplateBindingForCurrentFilterItem();
}
}
PropertyHelper.TransferProperty(this, ContextMenuProperty); // Coerce to get a default ContextMenu if none has been specified.
PropertyHelper.TransferProperty(this, RibbonControlService.CanAddToQuickAccessToolBarDirectlyProperty);
}