多个 类 的单个 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,因为有很多。有替代方案吗?

我看到两个解决方案。

  1. 您可以创建另一个从父项 class 派生的抽象 class,它将具有 TemperatureText 属性,并派生所有现有的 classes用它 属性 。您最终会得到两个 DataTempates - 一个用于 classes with TemperatureText 属性,第二个用于其他 classes.

  2. 只需将 TemperatureText 属性 移动到父级 class 并在某些派生的 classes

  3. 中将其留空