2016-04-18 6 views
0

概要: ボタンのIsEnabledプロパティを関連するビューモデルのboolフラグにバインドしました。すべての3つのプロパティを選択している場合IsValidTagRequestに設定する必要があり、現在のUI設定で複数のプロパティ選択に基づいてブール値フラグを設定するにはどうすればよいですか?

は、すなわちRaisePropertyChanged()は各セッターで焼成しています。

私が必要とされる特性のそれぞれのRaisePropertyChanged()後に真にプライベートブール_isValidTagRequestを設定されてみた - RegNumberSelectedZoneSelectedParkDurationを。

しかし、このシナリオでは、ボタンを有効にするために選択された値を持つ3つのプロパティがすべて考慮されていません。

質問: 誰もが、私は複数のプロパティが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"); 
      } 

     } 

    } 

3つのプロパティが:でIsEnabledがtrueに設定される前に必要とされる特性の各々続い

ブールproeprtyは、以下のように定義されているが、変更します

コンテキストの場合、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のバインディングが再評価されます。 あなたは3つの特性の組合せを返すために、「IsValidTagRequest」のゲッターのコードを更新する必要がありますが、のようなもの:

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

ことができます場合は答えとしてマークしてください、ありがとう ステファニー

関連する問題