2016-10-27 11 views
2

コンボボックスのデフォルト値を提供するためにCompositeCollection & CollectionContainerを使用しますが、実際のデータはクラスのフルパスとして表示されるという問題があります。WPFコンボボックスコレクションコンテナが表示されます。

クラスを表すフィールドを選択する方法はありますか。だからではなくStMaryChurchAttendance.Models.Groupsの、それはここで文字列プロパティに

が表示されますのXmaI

<StackPanel Orientation="Horizontal" DataContext="{Binding SelectionBarDataContext}" Name="SearchPanel"> 
       <Label>Group : </Label> 
       <ComboBox Name="SelectionBarGroupsComboBox"> 
        <ComboBox.Resources> 
         <CompositeCollection x:Key="CompositeCollection"> 
          <CollectionContainer Collection="{Binding Source={x:Reference SearchPanel}, Path=DataContext.Groups }" /> 
         </CompositeCollection> 
        </ComboBox.Resources> 
        <ComboBox.ItemsSource> 
         <CompositeCollection> 
          <ComboBoxItem Name="AllGroupItem" IsSelected="True">All Groups</ComboBoxItem> 
          <CollectionContainer Collection="{Binding Source={StaticResource CompositeCollection}}" /> 

         </CompositeCollection> 
        </ComboBox.ItemsSource> 
       </ComboBox> 
      </StackPanel> 

enter image description here

答えて

0

は通常、これは動作します:

<ComboBox 
    DisplayMemberPath="WhateverPropertyYouWant" 
    Name="SelectionBarGroupsComboBox"> 

したいプロパティでWhateverPropertyYouWantを交換してください表示するには、StMaryChurchAttendance.Models.Groupのいくつかのプロパティ。バインディングを使用しないでください。引用符で囲んだプロパティの名前を入力するだけです。

しかし、あなたはそこにさまざまなものが混在しているので、今回はうまくいきません。別のオプションがあります:Groupクラスの暗黙的なDataTemplateを作成します。これはComboBox内でのみ表示されます。 ComboBoxはそれを使用してGroupsと表示します。何も影響を与えません。

<ComboBox 
    Name="SelectionBarGroupsComboBox"> 
<ComboBox.ItemTemplate> 
         <DataTemplate 
     xmlns:models="clr-namespace:StMaryChurchAttendance.Models" 
     DataType="models:Group"> 
          <TextBlock Text="{Binding Name}" /> 
         </DataTemplate> 
        </ComboBox.ItemTemplate> 
    <ComboBox.Resources> 
     <CompositeCollection x:Key="CompositeCollection"> 
      <CollectionContainer Collection="{Binding Source={x:Reference SearchPanel}, Path=DataContext.Groups}" /> 
     </CompositeCollection> 


    </ComboBox.Resources> 
    <ComboBox.ItemsSource> 
     <CompositeCollection> 
      <ComboBoxItem Name="AllGroupItem" IsSelected="True">All Groups</ComboBoxItem> 
      <CollectionContainer Collection="{Binding Source={StaticResource CompositeCollection}}" /> 
     </CompositeCollection> 
    </ComboBox.ItemsSource> 
</ComboBox> 
+1

私はそれが 'DisplayMemberPath'ではなく' DisplayMemberPath'だと思います。 –

+0

@ ShadyAtefまあ、ありがとうございます。 –

+0

これは問題を解決しますが、静的な値(最初の項目)を選択するときに別のものを導入します。何も表示されません。文字列で指定したプロパティがないので –

関連する問題