VisualBrush与Datatrigger无法在WPF中工作

时间:2011-06-26 21:10:35

标签: c# wpf xaml datatrigger

我脚本编写了这段代码,在用户填充字段之前在字段中显示帮助文本(还计划使用它的一些修改来显示验证错误,如果有的话),但触发器不是,好吧,触发。这段代码出了什么问题?

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>

1 个答案:

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

测试过,它有效。这也具有以下优点:当用户开始键入时,背景立即消失,而不是当控件的焦点丢失并且源字符串被更新时。