我正在使用ComboBox,如下所示:
代码隐藏:
List<Client> clients = GetClients();
ComboBox1.ItemsSource = clients;
Client类包含属性ClientID
,ClientName
。 ComboBox的DisplayMemberPath
属性设置为ClientName
,SelectedValuePath
设置为ClientID
。
当我实现它时,扩展时的组合框显示完整的客户端类名称,但是它应该显示所有的ClientNames。它显示下拉列表中所有行的Ezone.Entities.Types.Client
。你们其中一个人可以解释一下并给我一个解决方法吗?提前谢谢。
答案 0 :(得分:0)
班级客户 -
public class Client:INotifyPropertyChanged
{
private string _ClientName;
public string ClientName
{
get { return _ClientName; }
set { _ClientName = value;
OnPropertyChanged("ClientName");
}
}
private string _ClientID;
public string ClientID
{
get { return _ClientID; }
set { _ClientID = value;
OnPropertyChanged("ClientID");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// Called when [property changed].
/// </summary>
/// <param name="PropertyName">Name of the property.</param>
private void OnPropertyChanged(string PropertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(PropertyName));
}
}
代码隐藏 -
List<Client> clients = GetClients();
ComboBox1.ItemsSource = clients;
public List<Client> GetClients()
{
List<Client> lst=new List<Client>();
Client obj = new Client();
obj.ClientName = "asd";
obj.ClientID = "1";
lst.Add(obj);
return lst;
}
查看Xaml -
<ComboBox Name="ComboBox1" Width="100" Height="30" DisplayMemberPath="ClientName" SelectedValuePath="ClientID"/>
答案 1 :(得分:0)
最简单的答案是WPF不知道要显示什么...在ToString()
类中实现Client
方法,您将看到此方法而不是完全限定名称。
ComboBox
无法识别您的班级可能有多种原因......可能存在拼写错误,或者您提到的属性可能不公开(公开)等等。