自定义类ToString()重写未显示在WPF组合框中

自定义类ToString()重写未显示在WPF组合框中,wpf,combobox,Wpf,Combobox,我有一个用MVVM构建的WPF应用程序,我正试图在一个组合框中显示一个自定义类。尽管将ToString方法重写为更简单的方法,但我仍然得到Namespace.Asset。我做错了什么? XAML代码 <ComboBox ItemsSource="{Binding Drivers}" SelectedItem="{Binding SelectedDriver}" Grid.Row="20" Grid.Column="1" Grid.ColumnSpan="3"/> 您可能需要在基类上

我有一个用MVVM构建的WPF应用程序,我正试图在一个组合框中显示一个自定义类。尽管将ToString方法重写为更简单的方法,但我仍然得到Namespace.Asset。我做错了什么? XAML代码

<ComboBox ItemsSource="{Binding Drivers}" SelectedItem="{Binding SelectedDriver}" Grid.Row="20" Grid.Column="1" Grid.ColumnSpan="3"/>

您可能需要在基类上设置ToString()

比如:

public class Driver
{
    protected string displayName;

    public override string ToString()
    {
        return displayName;
    }
}
然后,子类的类构造函数只需设置displayName

public class ExperimentalDriver : Driver
{
    public ExperimentalDriver()
    {
        displayName = "Experimental Driver";
    }
}

好吧,我知道了。我在那个抽象类中有一个抽象类“Driver”,我添加了以下代码,要求所有派生类都有一个ToString()方法


当我删除它时,问题就消失了。

你的参考资料不好。删除对带有ExperimentalDriver类的程序集的引用,并将其重新添加为项目引用。它是一个项目引用,但我删除了它,并重新添加了它以供giggles使用,它仍然显示为命名空间。Asset而不是“实验驱动程序”这与宣传的完全一样,它比我原来的解决方案稍微优雅一些。在您发布之前,我刚刚发现导致问题的原因是我有一个新的公共抽象字符串ToString();在我的基础课上。当我发表评论时,问题也消失了。
public class Driver
{
    protected string displayName;

    public override string ToString()
    {
        return displayName;
    }
}
public class ExperimentalDriver : Driver
{
    public ExperimentalDriver()
    {
        displayName = "Experimental Driver";
    }
}
public new abstract string ToString();