2011-09-18 12 views
0

コンテキスト:WPF:検証の目的でアドオンを使用する方法

Iは、2つのLabel S、(ユーザ名のための)1 TextBoxと一つPasswordBoxから成るWPF 4を使用して、ログイン・インタフェースを作成しています。どちらの要素も同じスタイル/テンプレートを使用します。

ユーザ名、パスワードがコードビハインドイベント(つまりを使用してモデルを更新(そのDataContextを表し)ビューのビュー・モデルでインスタンス化された私のUserモデルクラス、

Usernameプロパティにバインドされます。 OnPasswordChanged)。 PasswordIsValid

これらのプロパティ

  • UsernameIsValid
  • は私の[表示] - によって更新されています。つまり、私のユーザー名とパスワードの有効な状態を表し

    私はまた私のモデルに2つの性質を持っていますモデルとサービスのクラス。

    質問:

    がどのように私はこれらの要素のStyleためAdornerを作成し、唯一UsernameIsValidまたはPasswordIsValidプロパティがtrueのときにそれを表示することができますか?

    可能であれば私もそれが遅くので、コードを提供していない

答えて

2

(テキストを表示する吹き出し、およびアイコンになる)パラメータでadornerに表示されるテキストを渡すために、たいあなたに短い答えを与えるでしょう。

  1. 有効
  2. はそれがどうあるべきかにスタイルを設定したときに、それがどうあるべきかにadornerと、テキストボックスのテキストボックスが(のValidationRuleインタフェース)あまりにも束縛されているプロパティの設定データ検証
  3. 設定のデフォルト・スタイルDataErrorトリガーを使用して無効な場合。

以下は、スタイルを反転させるxamlコードの取得方法です。

 <Style.Triggers> 
      <Trigger Property="Validation.HasError" Value="true"> 
       <Setter Property="BorderBrush" Value="Red"/> 
       <Setter Property="BorderThickness" Value="1" /> 
       <Setter Property="Foreground" Value="Red" /> 
       <Setter 
        Property="ToolTip" 
        Value="{Binding RelativeSource={x:Static RelativeSource.Self},Path=(Validation.Errors)[0].ErrorContent}" /> 
      </Trigger> 
     </Style.Triggers> 
+0

回答ありがとうございます。ここでの問題は、提供された信用状が無効である場合にアドボナーを表示したいということです。 (つまり、ユーザー名/パスワードがデータベース内のエントリと一致しない)。これは、ビューモデルのUsernameIsValidプロパティとPasswordIsValidプロパティを更新することを意味し、これらの検証プロパティの値に応じて、コントロールのアドオンを表示/非表示にしたいと考えています。 (どちらのコントロールも同じスタイルを使用します)このようなことは可能ですか?アドオンをスタイルにバインドするにはどうすればよいですか?また、検証プロパティのトリガーを使用してそれを切り替えることはできますか? –

+0

この場合、スタイルの値(bool/false)に基づいてトリガーを設定する必要があります。これをビューモデルのbool値にバインドします。 – tsells

関連する問題