2016-07-17 16 views
0

私はWPFを学習していて、この単純なタスクを解決しようとすると、waaaayが長すぎます。RibbonComboBoxをポピュレートする

私の目標は、リボンコントロールに2つのRibbonComboBoxを追加することです。 カテゴリのうち1つは、もう1つはサブカテゴリです。ユーザーがカテゴリを変更するたびに、サブカテゴリのコンボボックスの更新を行い、現在のカテゴリのサブカテゴリを表示したいと思います。

XAML:

<RibbonTab Header="Home"> 
    <RibbonGroup Header="Category"> 
     <RibbonComboBox Label="Category:" HorizontalContentAlignment="Left" SelectionBoxWidth="250" Focusable="False"> 
      <RibbonGallery Name="galCategory" DisplayMemberPath="Text" SelectedValuePath="Value"> 
      </RibbonGallery> 
     </RibbonComboBox> 
     <RibbonComboBox Label="Subcategory:" HorizontalContentAlignment="Left" SelectionBoxWidth="250"> 
      <RibbonGallery Name="galSubcategory" DisplayMemberPath="Text" SelectedValuePath="Value"> 
      </RibbonGallery> 
     </RibbonComboBox> 
    </RibbonGroup> 
</RibbonTab> 

私はRibbonGallery要素を追加することによって、私は私がコンボボックスを移入するためのメソッドにアクセスできることを見出しました。ただし、私のデータがリストに表示されている間は、その項目をユーザーが選択することはできません。 (リスト内の項目をクリックしても何の効果もありません)

これらのコントロールをどのように設定するか教えていただけますか?

注:2つのコンボボックスをラベルのテキストの長さにかかわらず互いに整列させる方法を教えてくれる人には、ボーナスポイントがあります。

答えて

1

RibbonGalleryCategoryコントロールをRibbonGalleryの内側に追加して入力します。 RibbonGalleryに選択変更イベントリスナーを追加します。

XAML:

<RibbonComboBox Label="Category:" Name="rcmbCategory" SelectionBoxWidth="100" Height="20" HorizontalContentAlignment="Center"> 
    <RibbonGallery Name="galCategory" DisplayMemberPath="Text" SelectedValuePath="Value" SelectionChanged="RibbonGallery_SelectionChanged"> 
     <RibbonGalleryCategory Name="rgcCategory"/> 
    </RibbonGallery> 
</RibbonComboBox> 

.CS:

public MainWindow() 
{ 
    InitializeComponent(); 
    for(int i=0;i<=10;i++) 
     rgcCategory.Items.Add(i); 
} 

private void RibbonGallery_SelectionChanged(object sender, RoutedPropertyChangedEventArgs<object> e) 
{ 
    MessageBox.Show(rcmbCategory.SelectionBoxItem.ToString()); 
} 

詳細についてはCodeProject: RibbonComboBoxを参照してください。