Лично я их просто игнорирую. Если элемент не существует, он отображается в виде пустой строки, как правило, то, что я предпочитаю.
Это предупреждения в окне отладки, потому что это просто предупреждения, а не ошибки. Они предупреждают вас о возможной проблеме, но ничего плохого не случится, если вы их проигнорируете.
Если это действительно вас беспокоит, вы, вероятно, можете использовать столбец шаблона и указать разные шаблоны данных для разных типов объектов.
<DataTemplate TargetType="{x:Type local:ClassA}">
<TextBlock Text="{Binding PropertyA}" />
</DataTemplate>
<DataTemplate TargetType="{x:Type local:ClassB}">
<TextBlock Text="{Binding PropertyB}" />
</DataTemplate>
Я также иногда буду использовать конвертер, который возвращает typeof(value)
, и использую этот тип в DataTrigger
<Style.Triggers>
<DataTrigger Value="{x:Type local:ClassA}"
Binding="{Binding Converter={StaticResource ObjectToTypeConverter}}">
<Setter Property="Text" Value="{Binding PropertyA}" />
</DataTrigger>
<DataTrigger Value="{x:Type local:ClassB}"
Binding="{Binding Converter={StaticResource ObjectToTypeConverter}}">
<Setter Property="Text" Value="{Binding PropertyB}" />
</DataTrigger>
</Style.Triggers>