重用 WPF 数据模板

发布于 2024-11-28 10:55:53 字数 981 浏览 0 评论 0原文

我有一个列表框需要为每个项目显示一个复选框/文本块组合。然而,这些项目并不在集合中,而是作为类中的属性(布尔值/字符串)公开。这意味着我无法在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

安穩 2024-12-05 10:55:53

这就是UserControls 的用途。

That is what UserControls are for.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文