繁体   English   中英

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

[英]Conditionally validate Dynamically generated Controls in Silverlight

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

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

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

对此,我们将给予任何帮助。

谢谢。

(我以评论开始,但结果太长了)。

理论上,您可以在ViewModel中访问所有这些控件及其值。 在不了解程序细节的情况下,很难提出有用的建议,但从本质上讲,您需要从ViewModel(可能是布尔值)中公开更多属性,这些属性将根据控件中的值进行计算。 然后,您需要将控件上的IsEnabled属性绑定到这些新属性。

听起来很简单,但是我认为您存在一些体系结构问题,这些问题将使实现我上面建议的内容变得困难。 为了使它起作用并在其他控件的内容发生更改时自动更新控件,ViewModel需要实现INotifyPropertyChanged并在每次更新这些布尔属性之一时引发PropertyChanged事件。

我认为您要尝试执行的操作可以通过ItemsControl和DataTemplates(也许还有DataTemplateSelectors)实现。 这将使您可以在ViewModel中存储“数据”(例如List或更具体的内容),而无需引用实际的控件,而相关的DataTemplates将为您在ViewModel中拥有的不同数据类型添加正确的控件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM