如何根据使用wpf绑定的不同TextBox Text属性的输入启用/禁用按钮?
相关问题:Make Button enabled/disabled depending on the TextBox Text property in WPF?
我看到这个问题类似,但启用/禁用取决于一个TextBox。
有没有办法绑定启用/禁用多个TextBox Text属性的按钮?具体来说,需要根据包含TextBox列表的ItemsControl来禁用/启用按钮吗?
答案 0 :(得分:1)
您可以按照这些简单的步骤,我不想自己编写整个代码,但如果您觉得困难,请随时询问:
1.根据关联的问题,将ElementName
设为ItemsControlName
2.创建一个将控件作为value
的转换器。在convert()
中,检查ItemsControl
(值)&的项目的条件。从convert()
返回已禁用/已启用(False / true)
3.使用converter
内的密钥创建Windows.Resources
的实例
4.将转换器添加到IsEnabled="{ElementName=ItemsControlName,Path={Binding},Converter={StaticResource convKey}}"
你可能会遇到一些语法错误,请纠正它们。试一试。
答案 1 :(得分:1)
我想以MVVM的方式解决这个问题。
通常在使用Button
时,您在XAML中设置Command
属性...
<Button Command="{Binding MyCommand}" Content="Click Me"/>
在您的视图模型中,您有ICommand
与之关联。
public class MyViewModel
{
private ICommand _myCommand;
public ICommand MyCommand
{
get
{
if (_myCommand== null)
{
_myCommand = new RelayCommand(
p => this.CanMyCommandExecute(),
p => this.MyCommandExecute()
}
return _myCommand;
}
}
}
您会看到在视图模型中创建ICommand
实例,并在那里编写CanExecute
方法的代码。
CanExecute
方法返回一个bool,告诉该命令是否能够在当前条件下执行。
WPF会自动停用或启用与ICommand
相关联的按钮,具体取决于CanExcute方法是返回true
还是false
。
在“CanExecute”方法中,您可以编写代码,该代码将视图模型的其他几个绑定属性的值考虑在内,然后返回true为false。
因此,假设您在视图模型中有3个TextBox
控件和3个绑定字符串值。
在CanExecute方法中,检查这3个字符串属性的值并返回true或false。
然后相应地启用或禁用该按钮。