在我的 xaml 中,左侧有一个客户列表框。选择客户后,右侧将显示客户信息(姓名、地址、电话、类型等)到绑定文本框或组合框。
在右侧,Type 是一个组合框,它具有 SelectionChanged 事件,当值更改时会填充某些内容。问题是每当我在左侧的 ListBox 中选择不同的客户时,Type SelectionChanged 事件也会触发并填充值。如何检测并防止这种情况发生?谢谢!
在我的 xaml 中,左侧有一个客户列表框。选择客户后,右侧将显示客户信息(姓名、地址、电话、类型等)到绑定文本框或组合框。
在右侧,Type 是一个组合框,它具有 SelectionChanged 事件,当值更改时会填充某些内容。问题是每当我在左侧的 ListBox 中选择不同的客户时,Type SelectionChanged 事件也会触发并填充值。如何检测并防止这种情况发生?谢谢!
这听起来不像是一个复杂的问题,但它没有被很好地描述。你能举一个更好的例子吗?
你在使用 MVVM 模式吗?我想您可以将视图分解为多个视图和视图模型,例如“CustomersListViewModel”和“CustomerDetailsViewModel”。
您可以将 ListBox 绑定到客户集合并将“SelectItem”设置为名为“SelectedCustomer”的属性(在 CustomersListViewModel 中),然后当在 CustomersListBox 中更改选择时,它会触发一个名为“SelectedCustomerChanged”的方法或其他东西类似的,它本质上会新建一个“CustomersDetailsViewModel”(将选定的客户作为参数传递),这将显示新的 CustomerDetails。
在我看来,你有一个单一的视图正在交换一个客户,这会粗略地触发你的组合框上的 selectionchanged 事件,从而导致你的问题。客户化
例子:
客户列表视图模型
CustomerDetailViewModel(在构造函数参数中接受 Customer 对象)
“SelectedCustomerChanged”方法看起来像这样......
public void SelectedCustomerChanged()
{
this.CustomerDetailViewModel = new CustomerDetailViewModel(this.SelectedCustomer)
// Replace this with some activation of view code?
this.ActivateViewModel(this.CustomerDetailViewModel)
}
那会是我的方法吗?
谢谢,希望这会有所帮助。
本