自定义类ToString()重写未显示在WPF组合框中
我有一个用MVVM构建的WPF应用程序,我正试图在一个组合框中显示一个自定义类。尽管将ToString方法重写为更简单的方法,但我仍然得到Namespace.Asset。我做错了什么? XAML代码自定义类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"/> 您可能需要在基类上
<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();