2016-04-18 123 views
0

概述: 我已經將按鈕的IsEnabled屬性綁定到其相關視圖模型中的布爾標誌。如何根據多個屬性選擇設置布爾標誌?

在當前的UI設置的IsValidTagRequest應設置爲有,如果所有三個屬性選擇,即RaisePropertyChanged()每個二傳手已經解僱。

我曾嘗試私人布爾_isValidTagRequest所需的每一個屬性的RaisePropertyChanged()後設置爲true - RegNumberSelectedZoneSelectedParkDuration

但是,這種情況並沒有考慮到所有三個屬性都選擇了啓用按鈕的值。

問題: 有誰知道我可以檢查多個屬性已被更改之前啓用一個布爾屬性爲true?

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"); 
      } 
     } 
    } 
: - RegNumberSelectedZoneSelectedParkDuration

private bool isValidTagRequest = false; 
    public bool IsValidTagRequest 
    { 
     get { return isValidTagRequest; } 
     set 
     { 
      if (value != isValidTagRequest) 
      {    
       isValidTagRequest = value; 
       RaisePropertyChanged("IsValidTagRequest"); 
      } 

     } 

    } 

三個屬性:

的布爾媒體資源相關聯的定義如下,隨後每個所要求的特性的前的IsEnabled被設置爲真被改變

對於上下文,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}" /> 

回答

1

例如,您可以調用RaisePropertyChanged(「IsValidTagRequest」);在你的3個屬性的每個引導者的末尾。 因此,當設置其中一個屬性時,IsValidTag的綁定將被重新評估。 雖然你應該更新「IsValidTagRequest」的吸氣器的代碼返回3個屬性的組合,這樣的:

public bool IsValidTagRequest 
{ 
    get { return SelectedParkDuration != null && SelectedZone != 0 & RegNumber != "" }; 
} 

請標記爲答案是否有幫助,謝謝 史蒂芬妮