区分选择根据代码调用或手动更改而变化

时间:2011-12-08 13:42:46

标签: c# wpf events combobox

我想知道是否可以在组合框的事件选择更改中有所作为。 我想在手动点击组合框并更改其值的用户与我从代码中做出的选择更改之间做出改变。

即:

如果我点击我的组合框并手动更改其值,则会触发该事件 但如果我做myCombobox.selectedItem = 1 [ 编辑 ],则不会触发事件

在wpfcombobox中是否存在此行为的事件? 如果没有,你对如何做到这一点有任何想法吗?

由于

[ 编辑 ]或者是组合框更改其值的绑定

2 个答案:

答案 0 :(得分:3)

您正在处理几种不同的情况,这两种情况都是可以解决的。

1)在数据绑定期间不要处理SelectedItem请求。这里至少有两个选项:

a)在数据绑定完成或加载表单之前,不要将事件处理程序添加到控件中(取决于数据绑定是自动还是手动)。

b)设置表单级属性,指示何时可以处理SelectedItem事件。在加载表单或数据绑定完成后,您可能希望将此设置为true。在SelectedItem代码中,除非此属性为true,否则不要执行任何操作。

2)如果以编程方式更改SelectedItem,则处理SelectedItem逻辑。同样,有两个选择:

a)将您的逻辑从SelectedItem事件中提取到方法中,然后在执行逻辑设置所选项时调用此方法。

b)创建一个继承自base的自定义组合框,并将SetSelectedItem方法(例如)添加到此继承的组合中。然后,此方法将引发SelectedItem方法。这可以重复使用,无论何时手动设置SelectedItem,您都不必记得做两件工作。

答案 1 :(得分:2)

在更改代码中的selecteditem之前,请使用-=删除事件处理程序,然后再将其添加回来。