Click here to Skip to main content
15,891,184 members
Articles / Desktop Programming / WPF

Ribbon (WPF) – ribbon:RibbonComboBox

Rate me:
Please Sign up or sign in to vote.
4.67/5 (2 votes)
16 Sep 2011CPOL 34.1K   1   6
Ribbon (WPF): ribbon:RibbonComboBox

How to 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

XML
<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 be included directly into the XAML code as ItemSource = {x:Static Fonts.SystemFontFamilies}

Finally, some useful links:

This article was originally posted at http://blog.kribo.be/blog?p=180

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

 
GeneralGreat help for dynamic databinding Pin
MCY7-Feb-14 1:49
professionalMCY7-Feb-14 1:49 
QuestionWhat would it look like using MVVM? Pin
dietmar paul schoder25-Nov-13 5:44
professionaldietmar paul schoder25-Nov-13 5:44 
AnswerRe: What would it look like using MVVM? Pin
dietmar paul schoder25-Nov-13 5:59
professionaldietmar paul schoder25-Nov-13 5:59 
GeneralRe: What would it look like using MVVM? Pin
EngDRJ17-Mar-15 12:03
professionalEngDRJ17-Mar-15 12:03 
Awesome, Thanxs for showing the binding, who whould have guesed that if you put a normal combobox in the ribbon it will fire the ribbon's selection changed when that combobox selection changed fires. It bubble up for some reason, completely stumped me...

Cheers
QuestionCombobox item not getting selected Pin
bizzare19883-Nov-11 19:18
bizzare19883-Nov-11 19:18 
AnswerRe: Combobox item not getting selected Pin
kribo3-Nov-11 21:27
professionalkribo3-Nov-11 21:27 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.