使用MVVM根据WPF中的复选框选择启用/禁用文本框

使用MVVM根据WPF中的复选框选择启用/禁用文本框,wpf,mvvm,Wpf,Mvvm,我有一个WPF表单,有多达40个文本框,每个文本框都有一个复选框。每个文本框应根据其对应复选框的值启用/禁用。我见过一些解决方案,我们可以使用ICommand来实现这一点,但是我如何在没有40个ICommand实现的情况下处理40个个案?只需将文本框的IsEnabled属性绑定到复选框的IsChecked属性即可: <CheckBox Name="checkBox1" /> <TextBox IsEnabled="{Binding ElementName=checkBox1,

我有一个WPF表单,有多达40个文本框,每个文本框都有一个复选框。每个文本框应根据其对应复选框的值启用/禁用。我见过一些解决方案,我们可以使用
ICommand
来实现这一点,但是我如何在没有40个
ICommand
实现的情况下处理40个个案?

只需将
文本框的
IsEnabled
属性绑定到
复选框的
IsChecked
属性即可:

<CheckBox Name="checkBox1" />
<TextBox IsEnabled="{Binding ElementName=checkBox1, Path=IsChecked}" />


如果您有40个这样的控件,我将创建一个包含复选框和文本框的新控件。您可以使用该新控件而无需实现40个命令,而您的新控件只有一个命令实现。这也是一个需要维护的代码,作为额外的好处

是的,我只是在发布问题后尝试了一下。这对我有用。只是我试图避免命名每个复选框以实现纯MVVM,但我想我必须做一个例外。谢谢,我同意。不要通过MVVM执行此操作。这个启用/禁用选项是一个纯粹的用户界面设计决策,与应用程序的底层数据无关。@Prakash:是什么让你认为命名复选框不是“纯粹的”MVVM?MVVM中没有任何东西说你不应该给UI项命名…@Thomas True。理想的MVVM实现不会为数据绑定控件指定任何名称。我意识到我可以为复选框命名,因为它们不绑定到任何数据。我需要的是纯UI功能。@马克,你可以这样做:,绑定
复选框。IsChecked
IsTextBoxDisabled
,和
TextBox.IsEnabled
IsTextBoxEnabled