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上的另一个属性来存储所选项目。