WPF 中的条件数据模板

Posted

技术标签:

【中文标题】WPF 中的条件数据模板【英文标题】:Conditional Data Templates in WPF 【发布时间】:2010-12-08 16:51:46 【问题描述】:

如何根据数据绑定源中的 a 字段选择不同的数据模板? 我会有 2 个不同的 DataTemplates

<DataTemplate x:Key="DataTemplateLabel">
    <Label Width="60" Height="25" Background="Red">
    <TextBlock Text="Binding Path=Name"/>
    </Label>
</DataTemplate>



<DataTemplate x:Key="DataTemplateTxtBox">
    <TextBox Width="60" Height="25" Background="Red" Text="Binding Path=Text"/>
</DataTemplate>

if (isText) Then use DataTemplateTxtBox ELSE use DataTemplateLabel) 这可能吗? 谢谢。

【问题讨论】:

【参考方案1】:

您可以创建一个DataTemplateSelector 并将其分配给ContentTemplateSelector 属性(或ItemTemplateSelector,如果它在ItemsControl 中)

【讨论】:

【参考方案2】:

这更像是一个间接的答案,但是通过做多态性(即放弃 IsText 属性并使用不同的类型回答问题),您可以为每种不同的类型定义一个 DataTemplate。

【讨论】:

以上是关于WPF 中的条件数据模板的主要内容,如果未能解决你的问题,请参考以下文章

如何使用样式/模板格式化 wpf 中的小数位数?

WPF 自定义模板

WPF 绑定数据模板

找出WPF中的树,模板,命令,事件,数据绑定,样式和主题

WPF模板

C#WPF如何在由数据模板中的对象列表组成的列表框中设置项目[重复]