如何基于多个属性选择设置布尔标志

本文关键字:设置 布尔 标志 选择 属性 何基于 | 更新日期: 2024-09-25 15:50:59

概述:我已经将按钮的IsEnabled属性绑定到其相关视图模型中的bool标志。

在当前UI设置中,如果所有三个属性都有一个选择,即RaisePropertyChanged()在每个setter中都已激发,则IsValidTagRequest应设置为true

我所做的尝试是在每个必需属性RegNumberSelectedZoneSelectedParkDurationRaisePropertyChanged()之后将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");
           }
        }
    }

三种性质——RegNumberSelectedZoneSelectedParkDuration:

    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