silverlight依赖项属性回调方法保持在循环中

silverlight依赖项属性回调方法保持在循环中,silverlight,silverlight-4.0,silverlight-5.0,silverlight-toolkit,Silverlight,Silverlight 4.0,Silverlight 5.0,Silverlight Toolkit,我创建了一个具有三个依赖属性的用户控件 选定值 选定项目 选定索引 当其中一个在回拨中更改时,我将设置其他两个。例如,如果选定值更改,我将设置选定索引和选定项,从而触发其他每个属性的回拨,并在其中设置其他两个属性并保持循环。如何避免这种情况这很容易 在每个属性设置器中,仅当设置的值与现有值不同时(通过调用GetValue()),才设置其他两个属性设置器。添加一个If语句以在每个属性设置器中检查这一点 对于这些类型的情况,您应该更加小心,如果您使用的是MVVM框架,请检查是否确实需要这3个属性作为

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

这很容易

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

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

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