C# 在WPF数据绑定中使用and、or等组合布尔值

C# 在WPF数据绑定中使用and、or等组合布尔值,c#,wpf,data-binding,C#,Wpf,Data Binding,我想知道是否有人建议在WPF数据绑定中使用AND、OR等组合多个布尔值。理想情况下,这应该是符合MVVM的 例如: <TextBox Style="{StaticResource DataEntryField-Medium}" Text="{Binding FirstName}" IsEnabled="{Binding IsCustomerSelected AND IsEditingEnabled}" /> 我希望有一个文本框,只有在选择客户

我想知道是否有人建议在WPF数据绑定中使用AND、OR等组合多个布尔值。理想情况下,这应该是符合MVVM的

例如:

<TextBox Style="{StaticResource DataEntryField-Medium}"
         Text="{Binding FirstName}"
         IsEnabled="{Binding IsCustomerSelected AND IsEditingEnabled}" />

我希望有一个文本框,只有在选择客户并启用编辑时才启用。

“{Binding IsCustomerSelected and iseditingabled}”这在XAML中是不可能的。 我们可以通过使用多值转换器的多绑定来实现这一点

有关多重绑定的更多信息,请检查:

[Multibinding]允许您绑定到多个项目,并使用转换器返回单个新值。如果界面中的控件需要受到许多后端属性更改的影响,这将非常有用


您还可以选择在ViewModel中创建复合特性,如下所示:

public bool CanEditCustomer
{
     get { return IsCustomerSelected && IsEditingEnabled; }
}
在该属性的设置器中,您应该为该复合属性引发PropertyChanged事件:

public bool IsCustomerSelected
{
    ....
    set
    {
        if (value != _isCustomerSelected)
        {
            _isCustomerSelected = value;
            RaisePropertyChaged("IsCustomerSelected");
            RaisePropertyChaged("CanEditCustomer");
        }
    }
}
最后是xaml:

<TextBox Style="{StaticResource DataEntryField-Medium}"
         Text="{Binding FirstName}"
         IsEnabled="{Binding CanEditCustomer}" />

通过这种方式,您不需要转换器,但必须注意在需要时在ViewModel中引发PropertyChanged通知