【发布时间】:2020-04-11 01:34:36
【问题描述】:
我有一个按钮和一个文本框,我已经使用 MVVM、INotifyPropertyChanged 和 MVVM 将按钮设置为命令。
但是我希望在命令的CanExecute 方法返回false 时禁用文本框,即我希望在禁用按钮时禁用文本框。
如何将Textbox 仅与命令的CanExecute 挂钩?
【问题讨论】:
我有一个按钮和一个文本框,我已经使用 MVVM、INotifyPropertyChanged 和 MVVM 将按钮设置为命令。
但是我希望在命令的CanExecute 方法返回false 时禁用文本框,即我希望在禁用按钮时禁用文本框。
如何将Textbox 仅与命令的CanExecute 挂钩?
【问题讨论】:
TextBox 没有可以直接绑定到ICommand 源属性的Command 属性。
根据视图中TextBox和Button的关系,可以将前者的IsEnabled属性绑定到第二个:
<Button x:Name="btn" Content="..." Command="{Binding Command}" />
<TextBox IsEnabled="{Binding IsEnabled, ElementName=btn}" />
这仅适用于控件属于相同的namescope。如果没有,您应该在视图模型中添加一个bool 属性,并从命令的CanExecute 方法返回该属性的值,并将TextBox 的IsEnabled 属性绑定到它.
【讨论】: