如果非空,则无法通过样式触发器设置 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>
鼠标悬停时文本会更改。 有人知道这背后的理论吗?
The XAML below does not work (the text does not change when mousing over):
<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>
But, if the Text attribute is missing:
<Grid>
<TextBlock/>
</Grid>
The text does change on mouse over. Anybody knows the theory behind this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是一个 DependencyProperty 优先级问题,当您实际将属性设置为: 时,
它优先于触发器中设置的值。
请参阅
http://msdn.microsoft.com/en-us/library/ms743230 .aspx
It's a DependencyProperty precedence issue, when you actually set the property as in:
that takes precedence over the value set in the trigger.
see
http://msdn.microsoft.com/en-us/library/ms743230.aspx