我脚本编写了这段代码,在用户填充字段之前在字段中显示帮助文本(还计划使用它的一些修改来显示验证错误,如果有的话),但触发器不是,好吧,触发。这段代码出了什么问题?
XAML:
<TextBox x:Name="firstName" Validation.Error="Text_ValidationError"
Text="{Binding UpdateSourceTrigger=LostFocus, Path=firstName, ValidatesOnDataErrors=true, NotifyOnValidationError=true}" Margin="30,12,50,245">
<TextBox.Style>
<Style TargetType="TextBox" >
<Style.Triggers>
<DataTrigger Binding="{Binding Path=firstName}" Value="">
<Setter Property="Background">
<Setter.Value>
<VisualBrush Stretch="None">
<VisualBrush.Visual>
<TextBlock Text="First name" />
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
答案 0 :(得分:1)
不要使用DataTrigger
,这是没有必要的(绑定可能会被破坏,实际上这是我能想到的唯一可能导致这种情况无法工作的东西),使用正常Trigger
:
<Trigger Property="Text" Value="">
<Setter Property="Background">
<Setter.Value>
<VisualBrush Stretch="None">
<VisualBrush.Visual>
<TextBlock Text="First name" />
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</Trigger>
测试过,它有效。这也具有以下优点:当用户开始键入时,背景立即消失,而不是当控件的焦点丢失并且源字符串被更新时。