【问题标题】:Tricky WPF styling issue - can you do it?棘手的 WPF 样式问题 - 你能做到吗?
【发布时间】:2010-11-20 12:20:27
【问题描述】:

我有一个可观察的项目集合,其中每个项目都有一个名称和一个“组名”(两个字符串)。

棘手的部分是,在 XAML 中,我需要设置此集合的样式,以使具有相同组名的所有项目彼此相邻列出,并且组名显示在顶部。

我为组名的布局以及每个正在显示的项目的布局设计了用户控件。我玩过 ItemsControl 但不知道如何设置它的样式,以便具有相同组的项目以某种方式“合并”到使用通用 ItemControl 用户控件作为其源的相同 ItemsControl 中,组名称显示在顶部。

我确实通过使用一组“组”来实现这一点,每个组内都有一组项目,因为绑定工作得很好。但是,我没有考虑到每个项目可能位于多个组中(将一个人视为“工作朋友”和“同事”组,因此需要复制)。

非常感谢任何建议或解决方案:)

【问题讨论】:

    标签: wpf mvvm observablecollection itemscontrol styling


    【解决方案1】:

    首先,使用CollectionViewSource 对项目进行排序:

    <CollectionViewSource  x:Key="SortedItems" Source="{Binding YourUnsortedItems}">
        <CollectionViewSource.SortDescriptions>
            <scm:SortDescription PropertyName="GroupName"/>
        </CollectionViewSource.SortDescriptions>
    </CollectionViewSource>
    

    然后从您的ItemsControl(或其他)绑定到它:

    <ItemsControl Source="{Binding Source={StaticResource SortedItems}}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <!-- stick your template for each item here -->
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多