在WPF中如何使按钮启用/禁用取决于输入不同的文本框文本属性

本文关键字:文本 输入 取决于 属性 WPF 何使 按钮 启用 | 更新日期: 2023-09-27 18:16:15

如何使用wpf绑定使按钮启用/禁用取决于不同文本框文本属性的输入?

相关问题:使按钮启用/禁用取决于WPF中的文本框文本属性?

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

是否有任何方法绑定一个按钮启用/禁用多个文本框文本属性?具体来说,需要基于包含TextBox列表的ItemsControl禁用/启用按钮吗?

在WPF中如何使按钮启用/禁用取决于输入不同的文本框文本属性

我想用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连接的按钮取决于canexecute方法是否返回truefalse

在"CanExecute"方法中,你可以编写代码,将视图模型的其他几个绑定属性的值考虑在内,然后返回true或false。

假设你在视图模型中有3个TextBox控件和3个绑定字符串值。在CanExecute方法中,您检查这3个字符串属性的值并返回true或false。然后按钮将相应地启用或禁用。

您可以遵循这些简单的步骤,我不想自己编写整个代码,但如果您觉得困难,请随时询问:
1. 根据链接问题,将ElementName设置为ItemsControlName
2. 创建一个将控件作为value的转换器。在convert()中,检查ItemsControl (value) &从convert()返回disabled/Enabled(False/true) .
3.创建一个converter的实例,在Windows.Resources中使用一个键。
4. 将转换器添加到IsEnabled="{ElementName=ItemsControlName,Path={Binding},Converter={StaticResource convKey}}" .
你可能会遇到一些语法错误,请纠正它们&试试吧