2011-01-28 6 views
0

重大度を含むようにSilverlight検証を拡張しようとしています。メッセージの先頭に特殊文字を追加してエラーまたは警告かどうかを示し、スタイルを赤または青に変更する方法を取っています。私は、Validation Summeryコントロール、入力コントロール、およびValidationToolTipsに対して、カスタムスタイルを指定し、値コンバーターを使用してこれを実装しました。しかし、私はそれがラベルで動作するように見えることはできません。スタイルシルバーライト4での検証の重大度に基づくデータフォームラベル

私の問題は、検証メッセージをバインドできないようです。私は成功せず、次を試してみました:

OR

誰かがいくつかの助けを提供したり、別のアプローチを提案してくださいすることができます。 リンクやサンプルコードは大歓迎です。

答えて

0

さまざまなタイプの例外(警告のValidationWarning例外)をスローすることでこれを解決しました。検証例外がスローされるたびに、BindingValidationErrorイベントがトリガーされます。イベントハンドラで例外タイプをチェックし、例外に応じてスタイルを変更します。

private void OnBindingValidationError(object sender, ValidationErrorEventArgs e) 
    { 
     var textBox = sender as TextBox; 

     if (textBox != null) 
     { 
      if (e.Error.Exception is ValidationWarning) 
      { 
       UpdateStyle(textBox, "TextBoxWithWarning"); 
      } 
      else 
      { 
       UpdateStyle(textBox, "TextBoxWithError"); 
      } 
     } 
    } 

    private static void UpdateStyle(TextBox textBox, string styleName) 
    { 
     var newStyle = (Style)Application.Current.Resources[styleName]; 
     if (textBox.Style != newStyle) 
     { 
      textBox.Style = newStyle; 
      textBox.Focus(); 
     } 
    }