我创建了一个具有三个依赖项属性的用户控件 选定的价值 选定的项目 选定的指数 当其中一个在回调中改变时,我正在设置另外两个,例如,如果选择的值已更改,我正在设置所选索引和所选项目,其结果是触发其他每个属性的回调,其中它设置其他两个属性并继续loop .how避免这种情况
答案 0 :(得分:0)
这很简单,
当您设置的值与现有值不同时(通过调用GetValue()),每个Property Setter中的仅设置另外两个。添加一个If语句以在每个Property setter中检查它。
您应该更加小心这些类型的情况,要么检查您是否真的需要这三个属性作为依赖属性,或者如果您正在使用MVVM框架,请将其中一些属性更改为ViewModel中的常规属性。
如果您正在使用MVVM,许多框架都提供了一种方法来抑制ReactiveUI(ReactiveObject.SuppressChangeNotifications())或MVVM Light Tookit等通知。