多个 类 的单个 DataTemplate
A single DataTemplate for multiple classes
我有一个绑定到 DataTemplate 的父项 class。我从父 class 派生了几个子 class,我想在一个 DataTemplate 中渲染它们,因为它们非常相似。
<DataTemplate DataType="{x:Type local:ParentClass}">
...
<TextBox Text="{Binding Path=TemperatureText}" ../>
...
</DataTemplate>
TemperatureText 是一个 属性,它不在父 class 中,但仅在某些子 class 中。创建不拥有 属性 的子 classes 时,会生成以下错误消息:
BindingExpression path error: 'TemperatureText' property not found on 'object...
但是,我不想为所有子 classes 创建一个单独的 DataTemplate,因为有很多。有替代方案吗?
我看到两个解决方案。
您可以创建另一个从父项 class 派生的抽象 class,它将具有 TemperatureText 属性,并派生所有现有的 classes用它 属性 。您最终会得到两个 DataTempates - 一个用于 classes with TemperatureText 属性,第二个用于其他 classes.
只需将 TemperatureText 属性 移动到父级 class 并在某些派生的 classes
中将其留空
我有一个绑定到 DataTemplate 的父项 class。我从父 class 派生了几个子 class,我想在一个 DataTemplate 中渲染它们,因为它们非常相似。
<DataTemplate DataType="{x:Type local:ParentClass}">
...
<TextBox Text="{Binding Path=TemperatureText}" ../>
...
</DataTemplate>
TemperatureText 是一个 属性,它不在父 class 中,但仅在某些子 class 中。创建不拥有 属性 的子 classes 时,会生成以下错误消息:
BindingExpression path error: 'TemperatureText' property not found on 'object...
但是,我不想为所有子 classes 创建一个单独的 DataTemplate,因为有很多。有替代方案吗?
我看到两个解决方案。
您可以创建另一个从父项 class 派生的抽象 class,它将具有 TemperatureText 属性,并派生所有现有的 classes用它 属性 。您最终会得到两个 DataTempates - 一个用于 classes with TemperatureText 属性,第二个用于其他 classes.
只需将 TemperatureText 属性 移动到父级 class 并在某些派生的 classes
中将其留空