C# 在wpf中显示继承对象的最佳方式是什么?

C# 在wpf中显示继承对象的最佳方式是什么?,c#,wpf,C#,Wpf,假设我有: public class Result { public bool Success { get; set; } public string Description { get; set; } } 然后我想添加另一个级别,如下所示: public class AssertionFailedResult : Result { public string Expected { get; set; } public string Actual { get; set;

假设我有:

public class Result 
{
   public bool Success { get; set; }
   public string Description { get; set; }
}
然后我想添加另一个级别,如下所示:

public class AssertionFailedResult : Result
{
  public string Expected { get; set; }
  public string Actual { get; set; }
}

在WPF中,如何以一种方式显示简单结果,以另一种方式显示断言失败的结果?我希望基本上基于类型创建一个模板。

如果在资源字典中创建一个DataTemplate并设置DataType属性,但不设置x:Key属性,框架将根据对象的运行时类型将DataTemplate与对象关联。不管是好是坏,继承都没有效果。换句话说,即使没有数据类型为“AssertionFailedResult”的模板,框架也不会将类型为“AssertionFailedResult”的对象绑定到数据类型为“Result”的模板


编辑:对不起,我把它倒过来了。数据模板确实具有“多态”行为。风格不是。在任何情况下,框架都应该绑定到具有更特定数据类型的数据模板

我采纳了丹尼尔的答案,并以此为例。我认为发布代码可能会有所帮助:

<Window x:Class="SampleWpfApplication.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:SampleWpfApplication="clr-namespace:SampleWpfApplication">
    <Window.Resources>
        <DataTemplate DataType="{x:Type SampleWpfApplication:Result}">
            <Label>Simple Result</Label>            
        </DataTemplate>
        <DataTemplate DataType="{x:Type SampleWpfApplication:AssertionFailedResult}">
            <Label>Assertion Failed!</Label>
        </DataTemplate>
    </Window.Resources>
    <ContentControl x:Name="contentControl" Content="{Binding Path=Result}" />
</Window>
在主窗口中,我将DataContext设置为:

DataContext = new Model()
                  {
                      Result = new AssertionFailedResult()
                                   {
                                       Success = false,
                                       Description = "Assertion failed",
                                       Expected = "1",
                                       Actual = "1"
                                   }
                  };
因此,对于DataTemplate,wpf知道如何在没有任何附加方向的情况下呈现控件。再次感谢你,丹尼尔

DataContext = new Model()
                  {
                      Result = new AssertionFailedResult()
                                   {
                                       Success = false,
                                       Description = "Assertion failed",
                                       Expected = "1",
                                       Actual = "1"
                                   }
                  };