如何基于多个属性选择设置布尔标志
本文关键字:设置 布尔 标志 选择 属性 何基于 | 更新日期: 2024-09-25 15:50:59
概述:我已经将按钮的IsEnabled
属性绑定到其相关视图模型中的bool标志。
在当前UI设置中,如果所有三个属性都有一个选择,即RaisePropertyChanged()
在每个setter中都已激发,则IsValidTagRequest
应设置为true。
我所做的尝试是在每个必需属性RegNumber
、SelectedZone
、SelectedParkDuration
的RaisePropertyChanged()
之后将private bool_isValidTagRequest设置为true。
但这种情况并没有考虑到所有三个属性都选择了一个值来启用按钮。
问题:有人知道在启用bool属性为true之前如何检查多个属性是否已更改吗?
bool项目定义如下,后面是在IsEnabled设置为true之前要更改的每个必需属性:
private bool isValidTagRequest = false;
public bool IsValidTagRequest
{
get { return isValidTagRequest; }
set
{
if (value != isValidTagRequest)
{
isValidTagRequest = value;
RaisePropertyChanged("IsValidTagRequest");
}
}
}
三种性质——RegNumber
、SelectedZone
、SelectedParkDuration
:
private string _regNumber;
public string RegNumber
{
get
{
return this._regNumber;
}
set
{
if (_regNumber != value)
{
_regNumber = value;
RaisePropertyChanged("RegNumber");
}
}
}
private ZoneInfo _selectedZone;
public ZoneInfo SelectedZone
{
get
{
return this._selectedZone;
}
set
{
if (_selectedZone != value)
{
_selectedZone = value;
RaisePropertyChanged("SelectedZone");
}
}
}
private TimeSpan? _selectedParkDuration = TimeSpan.Parse("00:00");
public TimeSpan? SelectedParkDuration
{
get
{
return this._selectedParkDuration;
}
set
{
if (_selectedParkDuration != value)
{
_selectedParkDuration = value;
RaisePropertyChanged("SelectedParkDuration");
}
}
}
对于上下文,XAML中的绑定定义如下:
<Button Grid.Row="3"
Grid.Column="1"
Width="200"
Height="100"
HorizontalAlignment="Center"
VerticalAlignment="Bottom"
Command="{Binding TagRequestCommand}"
Content="Send"
IsEnabled="{Binding IsValidTagRequest,
Mode=TwoWay}"
Style="{StaticResource CustomButtonStyle}" />
例如,您可以调用RaisePropertyChanged("IsValidTagRequest");在您的3个属性的每个setter的末尾。因此,当设置了其中一个属性时,将重新评估IsValidTag的绑定。尽管您应该更新"IsValidTagRequest"的getter的代码以返回3个属性的组合,但类似于:
public bool IsValidTagRequest
{
get { return SelectedParkDuration != null && SelectedZone != 0 & RegNumber != "" };
}
如果有帮助,请标记为答案,谢谢Stéphanie