C# 在WPF数据绑定中使用and、or等组合布尔值
我想知道是否有人建议在WPF数据绑定中使用AND、OR等组合多个布尔值。理想情况下,这应该是符合MVVM的 例如: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}" /> 我希望有一个文本框,只有在选择客户
<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通知