0

我创建了一个具有三个依赖属性的用户控件 选定的值 选定的项目选择索引 当其中一个在回调中更改时我正在设置另外两个,例如,如果选定的值发生更改,我正在设置选定的索引和选定的项目,结果触发回调设置其他两个属性并保持循环的其他每个属性。如何避免这种情况

4

1 回答 1

0

这很容易,

在每个属性设置器中,仅当您设置的值与现有值不同时(通过调用 GetValue())设置其他两个。添加一个 If 语句以在每个属性设置器中检查这一点。

对于这些类型的情况,您应该更加小心,如果您使用的是 MVVM 框架,请检查您是否真的需要这 3 个属性作为依赖属性,或者将其中一些属性更改为 ViewModel 中的普通属性。

如果您使用 MVVM,许多框架都提供了一种抑制通知的方法,例如 ReactiveUI (ReactiveObject.SuppressChangeNotifications()) 或 MVVM Light Tookit。

于 2013-09-05T19:52:58.727 回答