c# - 有条件地验证 Silverlight 中动态生成的控件

标签 c# wpf silverlight mvvm

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

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

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

对此的任何帮助都将受到高度赞赏。

谢谢。

最佳答案

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

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

听起来很简单,但我认为您有一些架构问题,这将使我难以实现我上面的建议。为了使它工作并在其他控件的内容更改时自动更新您的控件,您的 ViewModel 需要在每次更新这些 bool 属性之一时实现 INotifyPropertyChanged 并引发 PropertyChanged 事件。

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

关于c# - 有条件地验证 Silverlight 中动态生成的控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21305071/

相关文章:

java - Java的AudioFormat.isBigEndian和AudioFormat.Encoding.PCM_SIGNED的C#等效项

c# - 在 WPF MVVM 中验证和保存数据如何正常工作?

c# - Silverlight + RIA 和 ADFS STS 在一段时间后失败

silverlight - 将折线点绑定(bind)到 ObservableCollection 不起作用

c# - 执行一般 LINQ 查询时出现 PlatformNotSupportedException

c# - (如何)我可以为变量引用制作字典吗?

c# - C#获取图片的高和宽的方法

c# - WPF 从代码隐藏创建样式绑定(bind)

c# - WPF - 尝试在任务中打开一个新窗口但收到 "The calling thread must be STA exception"

wpf - xaml 如何引用动态资源而不是作为属性而是作为元素