【发布时间】:2013-09-04 16:03:55
【问题描述】:
我创建了一个具有三个依赖属性的用户控件 选定值 所选项目 选定索引 当其中一个在回调中发生更改时,我正在设置另外两个,例如,如果选定的值发生更改,我正在设置选定的索引和选定的项目,结果触发每个其他属性的回调,它设置其他两个属性并继续循环.如何避免这种情况
【问题讨论】:
标签: silverlight silverlight-4.0 silverlight-5.0 silverlight-toolkit
我创建了一个具有三个依赖属性的用户控件 选定值 所选项目 选定索引 当其中一个在回调中发生更改时,我正在设置另外两个,例如,如果选定的值发生更改,我正在设置选定的索引和选定的项目,结果触发每个其他属性的回调,它设置其他两个属性并继续循环.如何避免这种情况
【问题讨论】:
标签: silverlight silverlight-4.0 silverlight-5.0 silverlight-toolkit
这很简单,
仅当您设置的值与现有值不同时(通过调用 GetValue()),在每个属性设置器中设置其他两个。添加一个 If 语句以在每个属性设置器中检查这一点。
你应该更加小心这些类型的情况,要么检查你是否真的需要这 3 个属性作为依赖属性,或者如果你使用的是 MVVM 框架,则将其中一些属性更改为 ViewModel 中的普通属性。
如果您使用 MVVM,许多框架都提供了一种抑制通知的方法,例如 ReactiveUI (ReactiveObject.SuppressChangeNotifications()) 或 MVVM Light Tookit。
【讨论】: