Click here to Skip to main content
15,893,564 members
Articles / Desktop Programming / WPF
Tip/Trick

Ribbon (WPF) - RibbonComboBox

Rate me:
Please Sign up or sign in to vote.
3.00/5 (1 vote)
11 Sep 2011CPOL 26.9K   2  
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
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
C#
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
C#
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:

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
Belgium Belgium
Developer within C#, Dynamics NAV (Navision), Php environments.

Comments and Discussions

 
-- There are no messages in this forum --