我在文本框上使用以下样式,以便它有文本和背景颜色,直到有人试图将数据输入其中。工作正常,但我的问题出现,因为它是一个登录屏幕,我的另一个控件是一个密码框,它不会让我访问密码属性(这相当于文本框的文本属性)。关于如何解决这个问题的任何建议?
<Style TargetType="TextBox" xmlns:sys="clr-namespace:System;assembly=mscorlib">
<Style.Resources>
<VisualBrush x:Key="CueBannerBrush" AlignmentX="Left" AlignmentY="Center" Stretch="None">
<VisualBrush.Visual>
<Label Content="Search" Foreground="LightGray"/>
</VisualBrush.Visual>
</VisualBrush>
</Style.Resources>
<Style.Triggers>
<Trigger Property="Text" Value="{x:Static sys:String.Empty}">
<Setter Property="Background" Value="{StaticResource CueBannerBrush}" />
</Trigger>
<Trigger Property="Text" Value="{x:Null}">
<Setter Property="Background" Value="{StaticResource CueBannerBrush}" />
</Trigger>
<Trigger Property="IsKeyboardFocused" Value="True">
<Setter Property="Background" Value="White" />
</Trigger>
</Style.Triggers>
<Setter Property="Control.Foreground" Value="#4C2C66"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
答案 0 :(得分:2)
如果您使用PasswordBox
,请务必更改TargetType
并使用DataTrigger
:
<Style TargetType="{x:Type PasswordBox}" xmlns:sys="clr-namespace:System;assembly=mscorlib">
<Style.Resources>
<VisualBrush x:Key="CueBannerBrush" AlignmentX="Left" AlignmentY="Center" Stretch="None">
<VisualBrush.Visual>
<Label Content="Search" Foreground="LightGray"/>
</VisualBrush.Visual>
</VisualBrush>
</Style.Resources>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Password}" Value="{x:Null}">
<Setter Property="Background" Value="{StaticResource CueBannerBrush}" />
</DataTrigger>
<Trigger Property="IsKeyboardFocused" Value="True">
<Setter Property="Background" Value="White" />
</Trigger>
</Style.Triggers>
<Setter Property="Control.Foreground" Value="#4C2C66"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>