2016-05-11 7 views
2

コンボボックス内のアイテムをグループにまとめようとしています。これを行うために、プロジェクト名とグループ名の文字列を持つオブジェクトを作成しました。次に、これらの値を表示するようにGroupStyleとItemTemplateを設定します。しかし、現在のところ、コンボボックスにはプロジェクト文字列だけが表示されています(ボックスには赤い枠があり、何らかのエラーを示しています)。ここでコンボボックスにグループ化が表示されない

は私のコンボボックスのためのXAMLです:

<ComboBox x:Name="comboBoxProjects" Margin="165,90,28,0" Grid.Column="0" VerticalAlignment="Top" Height="25" 
    IsSynchronizedWithCurrentItem="True" SelectedIndex="0" Style="{StaticResource ComboBoxDefault}" 
    ItemsSource="{Binding Path=ProjectClientSelections.ProjectGroupItems,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
    SelectedItem="{Binding Path=ProjectClientSelections.SelectedProject, UpdateSourceTrigger=PropertyChanged}"> 

    <ComboBox.GroupStyle> 
     <GroupStyle> 
      <GroupStyle.HeaderTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding GroupName}"/> 
       </DataTemplate> 
      </GroupStyle.HeaderTemplate> 
     </GroupStyle> 
    </ComboBox.GroupStyle> 

    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Project}"/> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 

</ComboBox> 

誰も私が間違っているつもりだ場所を確認していますか?

答えて

1

GroupStyleでは、DataContextはアイテム(ItemsSourceに含まれる型)ではなく、グループ化したアイテムのコレクションに基づいて形成されたCollectionViewGroupオブジェクトです。このため、おそらくNameプロパティを使用するコードに基づいて、CollectionViewGroup内のプロパティのいずれかへのバインディングパスを宣言する必要があります。

<DataTemplate> 
    <TextBlock Text="{Binding Name}" /> 
</DataTemplate> 

あなたはあなたのGroupDescriptionsを形成しているか表示されません:MSDN CollectionViewGroup Class

はこれにあなたの GroupStyle.HeaderTemplateを変更し

参照してください。すでにアイテムをグループ化していない場合、あなたは(あなたがウィンドウ内に含まれるとウィンドウのさを提供しているとのGroupBoxのDataContextのは同じであるXAMLを想定)の方法を、以下にそれを行うことができます。この変更GroupBoxItemSource結合した後

<Window.Resources> 
    <CollectionViewSource 
     Source="{Binding ProjectClientSelections.ProjectGroupItems}" 
     x:Key="GroupedProjectItems"> 
     <CollectionViewSource.GroupDescriptions> 
      <PropertyGroupDescription 
       PropertyName="GroupName" /> 
     </CollectionViewSource.GroupDescriptions> 
    </CollectionViewSource> 
</Window.Resources> 

を以下に直接(CollectionViewSourceリソースへ):

ItemsSource="{Binding Source={StaticResource GroupedProjectItems}}" 
+0

ありがとうございました! – fyodorfranz

関連する問題