gpt4 book ai didi

用于列表框和列表项的 wpf 嵌套数据绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 06:19:14 26 4
gpt4 key购买 nike

我是 WPF 和数据绑定(bind)的新手。我需要将扩展​​器标题绑定(bind)到列表(名称)和扩展器内容到列表(服务)。在阅读了有关数据绑定(bind)的 MS 教程(如何以及在何处使用 staticResource、Path 等)后,我更加困惑

我有一个

-------------
class Person

name as string
List servies as List (Of Services)

end class
--------------
class Service

name as string
end class
----------------

在我的主类 Application.vb 中,我有一个 Person 对象列表
p1 as List(of Person)

我将它们全部初始化为虚拟值。
在 Application.xaml 中,我有
<Expander Name="listBox4" VerticalAlignment="Top" 
HorizontalAlignment="Left" Header=" {Binding}" Content="{Binding}" >

<Expander.HeaderTemplate >

<DataTemplate>
<TextBlock Text="{Binding}"/>
</DataTemplate>

</Expander.HeaderTemplate>

<Expander.ContentTemplate>

<DataTemplate >
<ListBoxItem Content="{Binding}"/>
</DataTemplate>

</Expander.ContentTemplate>

</Expander >

如何将标题文本 block 绑定(bind)到人名并将内部列表框项绑定(bind)到他们的服务?

最佳答案

由于您使用的是对象列表,因此您需要使用 ItemsControl .扩展器只能处理一个 DataContext,而 ItemsControls 旨在处理列表或集合

您的代码应如下所示:

<ItemsControl ItemsSource="{Binding PersonList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Expander Header="{Binding Name}">
<ListBox ItemsSource="{Binding Services}" />
</Expander>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

这将创建一个循环,表示遍历 PersonList,并为每个 Person 生成一个 Expander,其 Header 等于 Person 的 name,Expanded Content 等于一个 ListBox,显示该 Person 的所有服务。

关于用于列表框和列表项的 wpf 嵌套数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6821024/

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