Howto use the ribbon:RibbonCombobox
The main question is how do I retrieve the
selectedItem
from the
ribbonComboBox
.
The answer is in the "
naming
" of the XAML elements and using the correct element-properties.
Step 1) Mainwindow.xaml
<wrappanel>
<ribbon:ribboncombobox selectionboxwidth="100">
<ribbon:ribbongallery x:name="fontsComboBox">
SelectionChanged="RibbonGallery_SelectionChanged">
<ribbon:ribbongallerycategory x:name="fonts" />
</ribbon:ribbongallery>
</ribbon:ribboncombobox>
<ribbon:ribboncombobox selectionboxwidth="40" >
<ribbon:ribbongallery x:name="fontSizeComboBox">
SelectionChanged="RibbonGallery_SelectionChanged">
<ribbon:ribbongallerycategory x:name="fontSize" />
</ribbon:ribbongallery>
</ribbon:ribboncombobox>
</wrappanel>
Step 2) Mainwindow.xaml.cs
public MainWindow()
{
InitializeComponent();
InitializeFonts();
}
public void InitializeFonts()
{
fonts.ItemsSource = Fonts.SystemFontFamilies;
fontsComboBox.SelectedItem = "Arial";
for (double i = 8; i < 48; i += 2)
{
fontSize.Items.Add(i);
}
fontSizeComboBox.SelectedItem = "8";
}
Step 3) The SelectionChanged
private void RibbonGallery_SelectionChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
RibbonGallery source = e.OriginalSource as RibbonGallery;
if (source == null) return;
switch (source.Name)
{
case "fontsComboBox":
_documentManager.ApplyToSelection(
TextBlock.FontFamilyProperty,
source.SelectedItem);
break;
case "fontSizeComboBox":
_documentManager.ApplyToSelection(
TextBlock.FontSizeProperty,
source.SelectedItem);
break;
}
}
In short, the
RibbonGallery
contains the
SelectionChanged
method and the
RibbonGalleryCategory
contain the
ItemSource
.
fonts.ItemsSource = Fonts.SystemFontFailies
can also be included directly into the XAML code as
ItemSource = {x:Static Fonts.SystemFontFamilies}
Finally, some useful links: