H.B*_*.B. 7 wpf setter styles wpf-controls
想知道是否可能,例如,如果我从TextBox中删除边框,并且我想在鼠标悬停时将其默认边框恢复.
<Style TargetType="TextBox">
<Setter Property="BorderBrush" Value="{x:Null}"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="?????"/>
</Trigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
我以为我可以使用它,但最后隐藏边界似乎是一个坏主意,但问题仍然存在.(我知道在这种情况下,如果鼠标不在TextBox上,我可以将Trigger反转为仅删除边框)
它并没有真正起作用.DependencyProperty系统通过考虑众多不同的价值来源来工作.正如您在此处所看到的,样式设置器和样式触发器被视为单独的源.(它们在"依赖属性设置优先级列表"部分中分别编号为8和6.)无论哪个活动值源具有最高优先级获胜.
一种财产来源无法消除不同来源提供的价值.触发器能够将值从setter设置为更改的唯一原因是触发器具有更高的优先级.没有权力消除低优先级源提供的值.
实现您在此处表达的特定目标的方法是反转触发器的意义 - 不定义样式设置器,并且仅在IsMouseOverfalse 时才使触发器处于活动状态.当然,在您可能想要这样做的所有可能情况下,这都无济于事.但由于没有一般解决方案,我认为你需要以自己的方式解决每个具体问题.