2012-02-15 9 views
1

私は入力に結合双方向でのTextBoxを持っているが失敗し、テキストボックスで変更しました。それは空であり、それは空にすることはできませんと言って、ツールチップが表示されている場合は、それが検証に失敗したような設定です。私の問題は、それが検証に失敗しているので、それは(すなわち、すべてのキーを押して)、テキストボックスの変更毎回バインディングを更新しようとしていることです。私はすべてのキーを押すとソースを更新したくありません。私はDataField.csのためのSilverlight 4.0のツールキットで、このコードにそれを絞り込むました:のTextBoxが検証

private void OnTextBoxTextChanged(object sender, TextChangedEventArgs e) 
{ 
    TextBox textBox = sender as TextBox; 

    if (textBox != null && (ValidationUtil.ElementHasErrors(textBox) || !this._lostFocusFired[textBox])) 
     { 
      this._lostFocusFired[textBox] = false; 
      ValidationUtil.UpdateSourceOnElementBindings(textBox); 
     } 
} 

要素がエラーを持っているので、それは)(ValidationUtil.UpdateSourceOnElementBindingsに落ちています。とにかくこれをやってしまうのを防ぐことができますか?

答えて

0

私はあなたがより正確にあなたの意図を表現するためにあなたの条件を整理する手助けしたいと思いますが、私は、既存のコードの結果がどうなるかについては明らかではありませんよ。私たちは、完全な実行可能(ただし、最小限の!)テストケースを求める理由です。あなたは、単に原因失敗した検証にアップデートしたくない場合は、これはトリックを行う必要があります。

private void OnTextBoxTextChanged(object sender, TextChangedEventArgs e) 
{ 
    TextBox textBox = sender as TextBox; 

    if (textBox != null && !this._lostFocusFired[textBox])) 
    { 
     ValidationUtil.UpdateSourceOnElementBindings(textBox); 
    } 
} 

あなたが入力を検証し、そのif文の外の結果に反応することができます。

関連する問題