0

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

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

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

我是否需要依赖像 PropertyChangedEvent 这样的 EventListner?我将如何管理过渡状态?就像已设置大小但尚未设置类型一样,tr 是否会抛出我必须捕获/忽略的 nullException 错误?

4

1 回答 1

1

我想最简单的方法是强制重新计算所有属性设置器,以便在值更改时重新生成所需的一切。也就是说,创建一个 ViewModel,它具有您想要绑定到的所有内容的属性(就像您通常那样)和一个重新计算您想要的所有内容的方法。然后在每个属性设置器中,调用该方法。

可以将重新计算方法放在您的 PropertyChanged 触发方法中,如下所示,但我个人不喜欢这种方法,因为我喜欢 OnPropertyChanged 简单:

protected virtual void OnPropertyChanged(string propName)
{
   if (PropertyChanged != null)
   {
      Recalculate();
      PropertyChanged(new PropertyChangedEventArgs(propName);
   }
}
于 2012-09-10T20:41:30.627 回答