0

コンテクスト:

Label2つのTextBox(ユーザー名用)と1つで構成されるWPF4を使用してログインインターフェイスを作成していますPasswordBox。両方の要素は同じスタイル/テンプレートを使用します。

Usernameユーザー名は、モデルクラスのプロパティにバインドされます。このプロパティはUser、ビューのビューモデル(そのモデルを表すDataContext)でインスタンス化されます。

パスワードは、コードビハインドイベント(例:)を使用してモデルを更新しますOnPasswordChanged

また、モデルには、ユーザー名とパスワードの有効な状態を表す2つのプロパティがあります。

  • UsernameIsValid
  • PasswordIsValid

これらのプロパティは、私のView-ModelクラスとServiceクラスによって更新されます。

質問:

Adornerこれらの要素のを作成し、またはプロパティがtrueStyleの場合にのみ表示するにはどうすればよいですか?UsernameIsValidPasswordIsValid

また、可能であれば、装飾者に表示されるテキスト(テキストを表示するコールアウトとアイコン)をパラメーターで渡したいと思います。

4

1 に答える 1

3

遅いのでコードを提供しませんが、短い答えが得られます。

  1. テキストボックスもバインドされているプロパティのデータ検証を設定します(ValidationRuleインターフェイス)
  2. 装飾を使用したテキストボックスのデフォルトのスタイルを、有効な場合のスタイルに設定します
  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>
于 2011-09-18T06:01:54.640 に答える