wpfcombobox结合

嗨,我正在尝试将List 绑定到组合框。

 public OfferEditPage() { InitializeComponent(); cusmo = new CustomerViewModel(); DataContext = this; Cusco = cusmo.Customer.ToList(); customer.ItemsSource = Cusco; customer.DisplayMemberPath = "name"; customer.SelectedValuePath = "customerID"; customer.SelectedValue = "1"; } 

我变得没有错误,但Combobox总是空的。 库斯科是我名单的财产。 我不知道这段代码有什么问题。 你能帮助我吗?

电贺

  public class Customer { public int customerID { get; set; } public string name { get; set; } public string surname { get; set; } public string telnr { get; set; } public string email { get; set; } public string adress { get; set; } } 

这是我的模型的客户类。

 public class CustomerViewModel { private ObservableCollection _customer; public ObservableCollection Customer { get { return _customer; } set { _customer = value; } } public CustomerViewModel() { GetCustomerCollection(); } private void GetCustomerCollection() { Customer = new ObservableCollection(BusinessLayer.getCustomerDataSet()); } } 

这是ViewModel。

尝试使用实际的Binding对象设置ItemsSource属性

XAML方法(推荐):

  

程序化方法:

 Binding myBinding = new Binding("Name"); myBinding.Source = cusmo.Customer; // data source from your example customer.DisplayMemberPath = "name"; customer.SelectedValuePath = "customerID"; customer.SetBinding(ComboBox.ItemsSourceProperty, myBinding); 

此外,Customer属性上的setter应该引发PropertyChanged事件

 public ObservableCollection Customer { get { return _customer; } set { _customer = value; RaisePropertyChanged("Customer"); } } 

如果上述操作无效,请尝试将绑定部分从构造函数移动到OnLoaded覆盖方法。 页面加载时,可能会重置您的值。

作为史蒂夫答案的扩展,

您需要设置表单的datacontext。

目前你有这个:

 InitializeComponent(); cusmo = new CustomerViewModel(); DataContext = this; 

它应该改为:

 InitializeComponent(); cusmo = new CustomerViewModel(); DataContext = cusmo; 

然后,史蒂夫指出,您将需要viewmodel上的另一个属性来存储所选项目。