DisplayMemberPath用法导致不需要的项目源到Combobox

时间:2013-08-06 09:28:41

标签: wpf combobox

我正在使用ComboBox,如下所示:

代码隐藏:

List<Client> clients = GetClients();
ComboBox1.ItemsSource = clients;

Client类包含属性ClientIDClientName。 ComboBox的DisplayMemberPath属性设置为ClientNameSelectedValuePath设置为ClientID

当我实现它时,扩展时的组合框显示完整的客户端类名称,但是它应该显示所有的ClientNames。它显示下拉列表中所有行的Ezone.Entities.Types.Client。你们其中一个人可以解释一下并给我一个解决方法吗?提前谢谢。

2 个答案:

答案 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无法识别您的班级可能有多种原因......可能存在拼写错误,或者您提到的属性可能不公开(公开)等等。