65.9K
CodeProject is changing. Read more.
Home

Ribbon (WPF) - RibbonComboBox

starIconstarIconstarIconemptyStarIconemptyStarIcon

3.00/5 (1 vote)

Sep 10, 2011

CPOL
viewsIcon

27130

Ribbon (WPF) - ribbon:RibbonComboBox

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":
         //change the font face
         _documentManager.ApplyToSelection(
                               TextBlock.FontFamilyProperty, 
                               source.SelectedItem);
          break;
       case "fontSizeComboBox":
        //Change the font size
         _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: