绑定IEnumerable <igrouping <string,basedto>&gt; wpf

时间:2015-05-06 13:14:19

标签: c# wpf mvvm

在我的ViewModel中的WPF应用程序(mvvm)中我有这样的东西:

IEnumerable<IGrouping<string,SomeClass>> FeildSet = Feilds
         .GroupBy(e => e.Label.Substring(0, 1));

如何在我的视图中将这个FeildSet对象绑定到DataTemplate中?

提前致谢。

1 个答案:

答案 0 :(得分:1)

  1. 由于FeildSet是集合(至少它是可枚举的),我建议使用内置的控件来处理对象集合(即任何基类为ItemsControl的控件。
  2. 现在,FeildSet中的每个项目也是按SomeClass分组的String的集合,因此我建议使用能够显示标题和内容的控件(即任何控制哪个基类是HeaderedContentControl)。
  3. 每个组的内容将再次显示为ItemsControl
  4. 这将为您提供以下画布:

    <ItemsControl
        ItemsSource="{Binding Path=FeildSet}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <HeaderedContentControl
                    Header="{Binding Path=Key}">
                    <ItemsControl
                        ItemsSource="{Binding Path=.}">
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <!-- template for SomeClass here -->
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                    </ItemsControl>
                </HeaderedContentControl>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>