0

语境:

我正在使用 WPF 4 创建一个登录界面,该界面由两个Labels 组成,一个TextBox(用于用户名)和一个PasswordBox. 两个元素使用相同的样式/模板。

用户名绑定到Username我的User模型类中的一个属性,该属性在 View 的 View-Model 中实例化(代表它的DataContext

密码使用代码隐藏事件更新模型(即:)OnPasswordChanged

我的模型中还有两个属性代表我的用户名和密码的有效状态,即:

  • UsernameIsValid
  • PasswordIsValid

这些属性由我的 View-Model 和 Service 类更新。

问题:

如何Adorner为这些元素创建一个Style并仅在UsernameIsValidorPasswordIsValid属性为 true 时显示它?

如果可能的话,我还希望将要在装饰器中显示的文本传入参数(这将是一个标注,显示文本和一个图标)

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 回答