概述:
我已将按钮的IsEnabled
属性绑定到其相关视图模型中的bool标志。
在当前的用户界面设置中,如果所有三个属性都有选择,则IsValidTagRequest
应设置为 true ,即每个设置器中都会触发RaisePropertyChanged()
。
我尝试的是在每个必需属性的RaisePropertyChanged()
之后将私有bool _isValidTagRequest设置为true - RegNumber
,SelectedZone
,SelectedParkDuration
。
但是这种情况并不考虑所有三个属性都选择了启用按钮的值。
问题: 有没有人知道如何在将bool属性设置为true之前检查多个属性是否已更改?
bool proeprty定义如下,然后在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}" />
答案 0 :(得分:1)
例如,您可以调用RaisePropertyChanged(“IsValidTagRequest”);在你的3个属性的每个setter的末尾。 因此,当设置其中一个属性时,将重新评估IsValidTag的绑定。 虽然您应该更新“IsValidTagRequest”的getter代码以返回3个属性的组合,例如:
public bool IsValidTagRequest
{
get { return SelectedParkDuration != null && SelectedZone != 0 & RegNumber != "" };
}
如果有帮助,请标记为答案,谢谢 史蒂芬妮