2016-05-22 11 views
0

私はTextBoxを持っており、ボタンがあります。データトリガーがトリガーしません

テキストボックスの値は、私のビューモデルにバインドされています。

マイボタンは自分のビューモデルにバインドされています。

ボタンをクリックすると、テキストボックスが空の場合、テキストに「はい」と表示されます。

すべてが機能しているようですが、トリガーが変更を呼び出すように見えません。

これは私のUIです:

<TextBox Name="txtFirstName" 
     Text="{Binding BookingWizard.CustomerRecord.FName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" > 
    <TextBox.Style> 
     <Style TargetType="TextBox"> 
      <Style.Triggers> 
        <DataTrigger Binding="{Binding BookingWizard.IsCustomerFNameValid}" Value="False"> 
         <Setter Property="Text" Value="yes" /> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </TextBox.Style> 
    </TextBox> 

マイビューモデル:

public ICommand ValidateForm 
{ 
    get 
    { 
     if (_validateForm == null) 
     { 
      _validateForm = new BookingCommand(
        param => Validate()   
      ); 
     } 
     return _validateForm; 
    } 
} 
private void Validate() 
{ 
    if (CustomerRecord.FName.Trim()=="") 
    { 
     IsCustomerFNameValid = false; 
    } 
    else 
    { 
     IsCustomerFNameValid = true; 
    } 
} 

public bool IsCustomerFNameValid 
{ 
    get { return _IsCustomerFNameValid; } 
    set { 
     _IsCustomerFNameValid = value; 
     RaisePropertyChanged("IsCustomerFNameValid"); 
    } 
} 

私はIsCustomerFNameValidがfalseに設定されているが、テキストボックスに 'はい' と表示されていないことがわかりますデバッグするとき。

答えて

1

TextBlockタグの属性としてテキストを直接設定しています。スタイルの値はすべて上書きされます。それをスタイル自体に移してください:

<TextBox Name="txtFirstName"> 
     <TextBox.Style> 
      <Style TargetType="TextBox"> 
       <Setter Property="Text" Value="{Binding BookingWizard.CustomerRecord.FName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding BookingWizard.IsCustomerFNameValid}" Value="False"> 
         <Setter Property="Text" Value="yes" /> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </TextBox.Style> 
    </TextBox> 
+0

私はほとんどそこにいました!タンクはそんなに! –

関連する問題