如果非空,则无法通过样式触发器设置TextBlock Text属性 - 为什么?

时间:2009-05-01 19:14:11

标签: wpf xaml triggers textblock

下面的XAML不起作用(鼠标悬停时文字不会改变):

<Window.Resources>
    <Style TargetType="TextBlock">
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
                <Setter Property="Text" Value="hover"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</Window.Resources>
<Grid>
    <TextBlock Text="original"/>
</Grid>

但是,如果缺少Text属性:

 <Grid>
    <TextBlock/>
</Grid>

鼠标悬停时文本会发生变化。有人知道这背后的理论吗?

1 个答案:

答案 0 :(得分:6)

当您实际将属性设置为:

时,这是一个DependencyProperty优先级问题
<TextBlock Text="original"/>

优先于触发器中设置的值。

http://msdn.microsoft.com/en-us/library/ms743230.aspx