重用 WPF 数据模板
我有一个列表框需要为每个项目显示一个复选框/文本块组合。然而,这些项目并不在集合中,而是作为类中的属性(布尔值/字符串)公开。这意味着我无法在 DataTemplate 中为该项目设置 Binding 属性,因为每个项目都将绑定到不同的属性。
是否可以定义一个不绑定到任何属性的 DataTemplate,然后在使用 DataTemplate 时定义 Binding。
在伪代码中:
<DataTemplate x:Key="ReusableDataTemplate">
<StackPanel Orientation="Horizontal">
<CheckBox />
<TextBlock />
</StackPanel>
</DataTemplate>
稍后将其用作:
<ListBox>
<ListBoxItem DataTemplate="ReusableDataTemplate" CheckBoxBinding="{Path=Enable1}" TextBlockBinding="{Path=Enable1Text}"/>
<ListBoxItem DataTemplate="ReusableDataTemplate" CheckBoxBinding="{Path=Enable2}"
TextBlockBinding="{Path=Enable2Text}"/>
<ListBoxItem DataTemplate="ReusableDataTemplate" CheckBoxBinding="{Path=Enable3}" TextBlockBinding="{Path=Enable3Text}"/>
</ListBox>
I have a ListBox needs to display a checkbox/textblock combination for each Item. The items however are not in a collection but are exposed as properties (boolean/String) in a class. Which means that I cannot set the Binding property in the DataTemplate for the Item, since each Item will be bound to a different property.
Is it possible to define a DataTemplate that is not bound to any properties, and then later on define the Binding when using the DataTemplate.
In pseudocode:
<DataTemplate x:Key="ReusableDataTemplate">
<StackPanel Orientation="Horizontal">
<CheckBox />
<TextBlock />
</StackPanel>
</DataTemplate>
And later on use it as:
<ListBox>
<ListBoxItem DataTemplate="ReusableDataTemplate" CheckBoxBinding="{Path=Enable1}" TextBlockBinding="{Path=Enable1Text}"/>
<ListBoxItem DataTemplate="ReusableDataTemplate" CheckBoxBinding="{Path=Enable2}"
TextBlockBinding="{Path=Enable2Text}"/>
<ListBoxItem DataTemplate="ReusableDataTemplate" CheckBoxBinding="{Path=Enable3}" TextBlockBinding="{Path=Enable3Text}"/>
</ListBox>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这就是
UserControls
的用途。That is what
UserControls
are for.