gpt4 book ai didi

c# - 如何在 WPF 中使用数据绑定(bind)为列表中的每个元素创建新的用户控件?

转载 作者:太空狗 更新时间:2023-10-30 00:12:42 25 4
gpt4 key购买 nike

我有一个对象列表。对于列表中的每个项目,我想创建一个绑定(bind)到该项目的新用户控件。根据我的阅读,以编程方式执行此操作对于 WPF 来说是不好的做法(并且不够直接),因此我应该改用数据绑定(bind)作为解决方案。问题是,我不知道该怎么做。我在编译时不知道列表的内容(只是类型),所以我无法为每个元素创建和绑定(bind) XAML。谷歌和 MSDN 似乎没有任何答案,所以也许我在以错误的方式思考这个问题?我需要做什么?

谢谢

编辑:澄清一下,我正在尝试制作自己的音乐评分软件,例如 Rosegarden。该列表将包含所有度量,用户控件将是它们的可视化表示。

最佳答案

一种比 Julien Lebosquain 的建议更通用的方法(当项目列表包含不止一种数据类型的对象时会起作用):

创建一个 DataTemplate 用于呈现列表中的项目类型,例如:

<DataTemplate DataType="local:Measure">
<local:MeasureUserControl DataContext="{Binding}"/>
</DataTemplate>

使用 ItemsControl 显示项目:

<ItemsControl ItemsSource="{Binding MeasureList}"/>

您可以将 ItemsControlItemsPanel 属性设置为 ItemsPanelTemplate 以管理它将如何布局用户控件,例如:

<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>

当您不需要 ListBox 的功能时,这种方法通常比使用 ListBox 更可取,例如它的默认边框和选择行为。

关于c# - 如何在 WPF 中使用数据绑定(bind)为列表中的每个元素创建新的用户控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2940328/

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