带有Datatrigger的VisualBrush在WPF中不起作用
本文关键字:WPF 不起作用 VisualBrush Datatrigger 带有 | 更新日期: 2023-09-27 18:00:21
我的脚本编写了这段代码,以便在用户填充字段之前在字段中显示辅助文本(如果出现验证错误,还计划对其进行一些修改以显示验证错误),但触发器并不是触发的。这个代码出了什么问题?
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>
不要使用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>
经过测试,它是有效的。这还有一个优点,即当用户开始键入时,背景会立即消失,而不是当控件上的焦点丢失并更新源字符串时。