【发布时间】:2015-08-25 12:07:14
【问题描述】:
配置窗口。很多选择。并且在同一个窗口中显示许多不同的配置:
public class BaseConfig: INotifyPropertyChanged {}
public class ConfigA: BaseConfig
{
public SomeType OptionA { get {...} set {...}}
}
public class ConfigB: BaseConfig
{
public SomeOtherType OptionB { get {...} set {...}}
}
这是视图模型:
public class ViewModel: INotifyPropertyChanged
{
public BaseConfig Config {get {...} set {...}}
}
并查看:
<TextBox Text="{Binding Config.OptionA}" .../>
<TextBox Text="{Binding Config.OptionB}" .../>
当ConfigA 或ConfigB 实例设置为视图模型的Config 时,这将起作用。但它会显示 missing 属性的绑定错误。
我担心这种方法是否有用。想象一下 100 个缺失的属性。那将是大量的绑定错误 = 显示窗口之前的巨大延迟。
问题:如果缺少属性,是否有防止绑定错误的好方法?或者也许有更好的方法来实现给定的场景?
我了解通过使用 不同 视图来显示 ConfigA 和 ConfigB 可以完成什么,但我真的很想将所有可绑定控件保留在 1 个视图中。在我的场景中,将有 20 多个配置,它们共享一些设置,有些则不共享。最后,它将需要创建PropertyGrid 的类似物(以动态创建视图)或过多地拆分视图(一直到存在由控件组成的视图以仅编辑一个特定属性)。这就是为什么我更喜欢一些通用方法“找到绑定 - 绑定到它,未找到 - 跳过,没问题”。
【问题讨论】: