0

我有一个表单,由一个包装了一个 ORM 对象的 ViewModel 支持,该对象映射一个包含“领土”字段的数据库记录。

此字段的业务逻辑由“ValidateTerritory”配置标志切换。如果打开该标志,则该字段必须包含 Territories 表中的值之一。在这种情况下,我的视图应该包含一个填充了这些区域的 ComboBox。这个我可以处理,很简单:在从数据库填充的 ViewModel 上包含一个 ValidTerritories 属性,并将 ComboBox 的 ItemsSource 绑定到该属性。当然,将 ComboBox 的 SelectedValue 绑定到 ORM 中的区域字段。

问题是如果“ValidateTerritory”标志被关闭,这个字段就没有验证规则。它是一个纯文本字段,包含任何不受约束的值。在这种情况下,我的视图应该包含一个 TextBox,它的 Text 属性绑定到 ORM 中的字段。

问题是:处理此问题的最简洁方法是什么 - 根据该配置对象的值将表单上的控件从一种类型切换到另一种类型?

4

1 回答 1

1

我会考虑使用 aContentControl绑定到“完整”数据(即Content="{Binding }")并具有 aDataTemplateSelector返回包含 a 的数据模板ComboBox(具有正确的绑定)或包含 a 的数据模板TextBox(同样,绑定在 中DataTemplate)。

这样,您就没有验证问题,加载折叠的控件没有性能成本,并且将来可以更灵活地让其他控件担任该角色(也许,一个AutoComplete)。

于 2012-05-13T11:46:36.343 回答