有条件地在Silverlight中验证动态生成的控件

时间:2014-01-23 10:11:54

标签: c# wpf silverlight mvvm

我有一个具有不同类型控件的表单,如文本框,下拉菜单,复选框,单选按钮等。所有这些控件都是在运行时从数据库动态加载的。

我想在条件基础上对文本框执行验证。例如,如果我们在下拉列表中选择了任何值,则必须在“文本”框中填写详细信息。否则,不需要文本框详细信息。

我愿意使用数据库来执行此任务,我在项目中使用MVVM模式。

对此的任何帮助都非常感谢。

感谢。

1 个答案:

答案 0 :(得分:0)

(我把它作为评论开始,但结果太长了。)

理论上,您可以在ViewModel中访问所有这些控件及其值。 在不知道程序细节的情况下,很难建议任何有用的东西,但实质上你需要从ViewModel(可能是boolean)中暴露一些属性,这些属性将根据控件中的值进行计算。然后,您需要将控件上的IsEnabled属性绑定到这些新属性。

听起来很简单,但我认为你有一些架构问题会让我很难实现上面提到的建议。为了使其工作并在其他控件的内容发生更改时自动更新控件,每次更新其中一个布尔属性时,ViewModel都需要实现INotifyPropertyChanged并引发PropertyChanged事件。

我认为您尝试做的事情可以使用ItemsControl和DataTemplates(以及DataTemplateSelectors)来实现。这将允许您在ViewModel中存储“数据”(比如列表或更具体的内容)而不引用实际的控件,相关的DataTemplates将为您在ViewModel中的不同数据类型添加正确的控件。