2017-06-01 8 views
1

私は、アプリケーション内に3つのプロパティGroupName,ItemName、およびDataというクラスを持っています。これらのクラスのコレクションをGroupNameでグループ化し、そのItemNameプロパティをテキストボックスに表示するには、ListViewがあります。問題は、コードを実行するとグループが正しく表示されますが、いずれのメンバーも表示されないことです。ここでなぜWPF ListViewのグループは空ですか?

は、XAMLコードです:

<ListView x:Name="MyList"> 
    <ListView.GroupStyle> 
     <GroupStyle> 
      <GroupStyle.ContainerStyle> 
       <Style TargetType="{x:Type GroupItem}"> 
        <Setter Property="Template"> 
         <Setter.Value> 
          <ControlTemplate> 
           <Expander IsExpanded="True"> 
            <Expander.Header> 
             <TextBlock FontWeight="Bold" Text="{Binding Name}"/> 
            </Expander.Header> 
           </Expander> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
       </Style> 
      </GroupStyle.ContainerStyle> 
     </GroupStyle> 
    </ListView.GroupStyle> 
    <ListView.ItemTemplate> 
     <DataTemplate DataType="{x:Type testProgram:MyClass}"> 
      <TextBlock Text="{Binding ItemName}"/> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

そしてここでは、背後にあるコードです:

public partial class MyListView 
{ 
    public MyListView(ObservableCollection<MyClass> items) 
    { 
     InitializeComponent(); 
     Items = items; 

     var v = CollectionViewSource.GetDefaultView(Items); 
     v.GroupDescriptions.Add(new PropertyGroupDescription("GroupName")); 
     MyList.ItemsSource = v; 
    } 

    public ObservableCollection<MyClass> Items { get; set; } 
} 

私は<ListView.GroupStyle>...を削除し、MyList.ItemsSource = Items;を設定すると、その後すべてが正常に表示されます。 問題がItemsSource = v,DataType = "{x:Type testProgram:MyClass}"{Binding ItemName}の間であると思われますが、何が壊れているのか、それを修正する方法がわかりません。

答えて

0

ControlTemplateにはItemsPresenterがありません。 WPFはGroupItemテンプレート内のItemsPresenterを使用して、テンプレートを展開するときに実際のアイテムが配置される場所をマークします。プレゼンターがいないので、詳細項目は表示されません。

はこれにテンプレートを変更してみてください:

<Expander IsExpanded="True"> 
    <Expander.Header> 
     <TextBlock FontWeight="Bold" Text="{Binding Name}"/> 
    </Expander.Header> 
    <Expander.Content> 
     <ItemsPresenter /> 
    </Expander.Content> 
</Expander> 
+0

だったという。ありがとう! – Kevlarz

関連する問題