在WPF中如何根据不同TextBox Text属性的输入启用/禁用按钮?

时间:2015-10-06 06:41:08

标签: c# wpf

如何根据使用wpf绑定的不同TextBox Text属性的输入启用/禁用按钮?

  

相关问题:Make Button enabled/disabled depending on the TextBox Text property in WPF?

我看到这个问题类似,但启用/禁用取决于一个TextBox。

有没有办法绑定启用/禁用多个TextBox Text属性的按钮?具体来说,需要根据包含TextBox列表的ItemsControl来禁用/启用按钮吗?

2 个答案:

答案 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。 然后相应地启用或禁用该按钮。