管理WPF表单上的Aggresive更新

时间:2012-09-10 20:29:24

标签: wpf c#-4.0

我正在为C#WPF中正在使用的图形编辑器实现一个属性面板。一种对象的属性面板有许多字段:

  • 名称
  • 尺寸
  • 类型 - 组合框取决于尺寸
  • 有效负载 - 组合框取决于大小和类型
  • tr - 根据大小,类型,有效负载和db值计算
  • 延迟 - 根据size,tr和db值计算

我应该如何最好地构建视图模型,以便积极刷新/更新所有字段?如果我对类型和/或大小进行了更改,则会在GUI中自动重新计算和刷新tr。等等等等。

我是否需要依赖PropertyChangedEvent之类的EventListners?我将如何管理过渡国家?就像设置了大小,但尚未设置类型一样,tr会抛出一个我必须捕获/忽略的nullException错误吗?

1 个答案:

答案 0 :(得分:1)

我认为最简单的方法是强制重新计算所有属性设置器,以便在值发生变化时重新生成所需的所有内容。也就是说,创建一个ViewModel,它具有绝对要绑定的所有内容的属性(通常情况下),以及重新计算所需内容的方法。然后在每个属性设置器中调用该方法。

可以也将你的重新计算方法放在你的PropertyChanged-firing方法中,如下所示,但我个人并不喜欢这种方法只是因为我喜欢OnPropertyChanged是simiple:

protected virtual void OnPropertyChanged(string propName)
{
   if (PropertyChanged != null)
   {
      Recalculate();
      PropertyChanged(new PropertyChangedEventArgs(propName);
   }
}