Joe*_*oel 4 c# wpf binding user-controls
我有一个对象列表.对于列表中的每个项目,我想创建一个绑定到该项目的新用户控件.根据我的阅读,以编程方式执行此操作是WPF的不良做法(并且不太直接),因此我应该使用数据绑定作为解决方案.问题是,我无法弄清楚如何做到这一点.我在编译时不知道列表的内容(只是类型),所以我无法为每个元素创建和绑定XAML.谷歌和MSDN似乎没有任何答案,所以也许我正在考虑这个错误的方式?我需要做什么?
谢谢
编辑:澄清一下,我正在尝试制作自己的音乐评分软件,比如Rosegarden.该列表将包含所有度量,用户控件将是它们的可视化表示.
比Julien Lebosquain的建议更通用的方法(以及当项目列表包含多种数据类型的对象时将起作用的方法):
创建一个DataTemplate
用于在列表中显示类型的项目,例如:
<DataTemplate DataType="local:Measure">
<local:MeasureUserControl DataContext="{Binding}"/>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
使用an ItemsControl
来呈现项目:
<ItemsControl ItemsSource="{Binding MeasureList}"/>
Run Code Online (Sandbox Code Playgroud)
您可以设置to 的ItemsPanel
属性来控制它如何布置用户控件,例如:ItemsControl
ItemsPanelTemplate
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
Run Code Online (Sandbox Code Playgroud)
这种方法通常优于使用a ListBox
时不需要的功能ListBox
,例如其默认边框和选择行为.
归档时间: |
|
查看次数: |
3385 次 |
最近记录: |