gpt4 book ai didi

WPF ListView 按 2 列分组但仅显示 1 个组标题

转载 作者:行者123 更新时间:2023-12-02 04:49:00 26 4
gpt4 key购买 nike

ListView 显示以下类的集合:

public class Employee
{
private string _department;
private string _manager;
private string _name;
private string _address;

public string Department
{
get { return _department; }
}
public string Manager
{
get { return _manager; }
}
public string Name
{
get { return _name; }
}
public string Address
{
get { return _address; }
}
}

Department 和 Manager 之间存在一对一的关系,因此具有相同部门的任何 2 行也将具有相同的经理。

我想按部门/经理分组,组标题显示“部门(经理)”。

我的 CollectionViewSource 看起来像

    <CollectionViewSource x:Key="cvsEmployees" Source="{Binding Employees}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Department" />
<PropertyGroupDescription PropertyName="Manager" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>

计划是不显示第一级标题(部门),并以某种方式从第二级标题绑定(bind)到部门(第一级)和经理(第二级)。

3个问题:

  1. 为了避免显示一级标题,我在 groupstyle 中有一个空数据模板:

    <GroupStyle>
    <GroupStyle.HeaderTemplate>
    <DataTemplate>
    </DataTemplate>
    </GroupStyle.HeaderTemplate>
    </GroupStyle>

    这看起来很笨重。有没有更优雅的方法来跳过组标题?

  2. 如何从第 2 级标题(经理)绑定(bind)到第 1 组级别属性(部门)以实现所需的“部门(经理)”?

  3. 有没有比创建 2 个分组级别更好的方法?

谢谢

最佳答案

解决了主要障碍,上面的问题 2:如何从组头绑定(bind)到不是分组属性的属性。

解决方案是将数据上下文更改为:{Binding Items}。然后 ItemSource 属性可用

<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="0,10,0,3" DataContext="{Binding Items}" >
<TextBlock Text="{Binding Path=Department}" FontWeight="Bold" Margin="3"/>
<TextBlock Text="{Binding Path=Manager, StringFormat='({0})'}" Margin="3"/>
</StackPanel>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>

关于WPF ListView 按 2 列分组但仅显示 1 个组标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19222037/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com