gpt4 book ai didi

c# - WPF:将 Collection 与 Collection 绑定(bind)到带有组的 ListBox

转载 作者:太空狗 更新时间:2023-10-29 18:02:53 24 4
gpt4 key购买 nike

有时 WPF 对我来说太复杂了。我有我的“Window1”,其中包含一组“组”。 “Group”是一个包含“Person”集合的类。最后这应该是一个联系人列表。我只想在 ListBox 中显示组及其人员,其中列表组的组名称等于我的类“Groups”的名称属性。

我试过将 CollectionViewSource 绑定(bind)到“集合”。组显示正确,但列表的项目等于组名。所以每个组只有一项:它的组名。

此处的许多示例显示了只有一个集合的项目分组。我能做的是将组名设置为“人”的属性。但是后来我数不清了(这确实是必要的): - 每组有多少人 - 有多少人的“状态”是“在线”。

我在“组”类中使用 linq 来计算它。感谢您提供任何帮助我入门的建议。

最佳答案

好吧,我不确定这是否是您想要实现的目标,但您可以尝试以下方法:

假设你的类(class)是这样的:

public class Group
{
public string Name { get; set; }
public List<Contact> Contacts { get; set; }
}

public class Contact
{
public string Name { get; set; }
public bool IsOnline { get; set; }
}

您可以将 ListBox.ItemTemplate 设置为绑定(bind)到 Contacts 属性的另一个 ListBox,例如:

<CollectionViewSource x:Key="groups" Source="{Binding}" >
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Name" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>

<DataTemplate x:Key="groupTemplate" DataType="Group">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>

<ListBox ItemsSource="{Binding Source={StaticResource groups}}">
<ListBox.GroupStyle>
<GroupStyle HeaderTemplate="{StaticResource groupTemplate}" />
</ListBox.GroupStyle>
<ListBox.ItemTemplate>
<DataTemplate DataType="Contact">
<ListBox ItemsSource="{Binding Contacts}">
<ListBox.ItemTemplate>
<DataTemplate DataType="Contact">
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

您必须稍微调整一下内部列表框的样式。

编辑:使用TreeView

的另一种解决方案
<DataTemplate DataType="Contact">
<TextBlock Text="{Binding Name}" />
</DataTemplate>

<TreeView ItemsSource="{Binding Source={StaticResource groups}}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="Group" ItemsSource="{Binding Contacts}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>

关于c# - WPF:将 Collection 与 Collection 绑定(bind)到带有组的 ListBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/896587/

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