Vee*_*sss 8 c# wpf binding combobox list
嗨,我正在尝试将List <>绑定到组合框.
<ComboBox Margin="131,242,275,33" x:Name="customer" Width="194" Height="25"/>
public OfferEditPage()
{
InitializeComponent();
cusmo = new CustomerViewModel();
DataContext = this;
Cusco = cusmo.Customer.ToList<Customer>();
customer.ItemsSource = Cusco;
customer.DisplayMemberPath = "name";
customer.SelectedValuePath = "customerID";
customer.SelectedValue = "1";
}
Run Code Online (Sandbox Code Playgroud)
我变得没有错误,但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; }
}
Run Code Online (Sandbox Code Playgroud)
这是我的模型的客户类.
public class CustomerViewModel
{
private ObservableCollection<Customer> _customer;
public ObservableCollection<Customer> Customer
{
get { return _customer; }
set { _customer = value; }
}
public CustomerViewModel()
{
GetCustomerCollection();
}
private void GetCustomerCollection()
{
Customer = new ObservableCollection<Customer>(BusinessLayer.getCustomerDataSet());
}
}
Run Code Online (Sandbox Code Playgroud)
这是ViewModel.
Ste*_*ves 23
尝试使用实际的Binding对象设置ItemsSource属性
XAML方法(推荐):
<ComboBox
ItemsSource="{Binding Customer}"
SelectedValue="{Binding someViewModelProperty}"
DisplayMemberPath="name"
SelectedValuePath="customerID"/>
Run Code Online (Sandbox Code Playgroud)
程序化方法:
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);
Run Code Online (Sandbox Code Playgroud)
此外,Customer属性上的setter应该引发PropertyChanged事件
public ObservableCollection<Customer> Customer
{
get { return _customer; }
set
{
_customer = value;
RaisePropertyChanged("Customer");
}
}
Run Code Online (Sandbox Code Playgroud)
如果上述操作无效,请尝试将绑定部分从构造函数移动到OnLoaded覆盖方法.页面加载时,可能会重置您的值.