在我的xaml中,我有一个左侧的Customers列表框。选择客户后,右侧会显示客户信息(姓名,地址,电话,类型等)到绑定文本框或组合框。WPF Combobox SelectionChanged记录绑定
在右边,Type是一个组合框,它有一个SelectionChanged事件,当值改变时它会填充某些东西。问题是每当我在左边的ListBox中选择一个不同的客户时,Type SelectionChanged事件也会启动并填充值。我如何检测并防止这种情况发生?谢谢!
在我的xaml中,我有一个左侧的Customers列表框。选择客户后,右侧会显示客户信息(姓名,地址,电话,类型等)到绑定文本框或组合框。WPF Combobox SelectionChanged记录绑定
在右边,Type是一个组合框,它有一个SelectionChanged事件,当值改变时它会填充某些东西。问题是每当我在左边的ListBox中选择一个不同的客户时,Type SelectionChanged事件也会启动并填充值。我如何检测并防止这种情况发生?谢谢!
它听起来不像一个复杂的问题,但它没有被描述得很好。你能举一个更好的例子吗?
您使用的是MVVM模式吗?我会想象你可以将视图分解为多个Views和View模型,例如“CustomersListViewModel”和“CustomerDetailsViewModel”。
您可以将ListBox绑定到Customers集合,并将“SelectItem”设置为名为“SelectedCustomer”(位于CustomersListViewModel中)的属性,然后当选择在CustomersListBox中更改时,它会触发一个名为“ SelectedCustomerChanged“或类似的东西,它们基本上会创建一个”CustomersDetailsViewModel“(将所选客户作为参数传递),并显示新的CustomerDetails。
这听起来像你有一个单一的视图是交换了一个客户,这将粗暴地触发组合框上的choosechanged事件,导致你的问题。顾客 灰
实施例:
CustomersListViewModel
CustomerDetailViewModel(接受在构造PARAMS一个客户对象)
“SelectedCustomerChanged”方法看起来像这样...
public void SelectedCustomerChanged()
{
this.CustomerDetailViewModel = new CustomerDetailViewModel(this.SelectedCustomer)
// Replace this with some activation of view code?
this.ActivateViewModel(this.CustomerDetailViewModel)
}
这将是我的方法?
谢谢,希望这会有所帮助。
本
嗨本,我没有使用MVVM模式。这是一个使用EF来处理数据的WPF应用程序。我加载客户的列表框。当选择一个客户时,窗口DataContext被设置为SelectedItem。我相信ComboBox SelectionChanged事件启动了,因为每次选择一个新客户时,Type都会改变。我需要知道如何在更改不是直接从ComboBox下拉列表更改时阻止ComboBox SelectionChanged执行。 – Seecott 2010-11-26 19:52:23