gpt4 book ai didi

wpf - 是否可以使用 setter 将属性返回到其默认值?

转载 作者:行者123 更新时间:2023-12-04 12:24:46 24 4
gpt4 key购买 nike

想知道这是否可能,例如如果我从 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>

我以为我可以使用它,但最终隐藏边框似乎是一个坏主意,但问题仍然存在。 (我知道在这种情况下,如果鼠标不在 TextBox 上方,我可以反转触发器以仅删除边框)

最佳答案

它不是那样工作的。 DependencyProperty 系统通过考虑许多不同的值源来工作。正如你所看到的 here ,样式 setter 和样式触发器被认为是不同的来源。 (它们在“依赖属性设置优先级列表”部分中分别编号为 8 和 6。)具有最高优先级的事件值源将获胜。

一种属性源不能删除不同源提供的值。触发器能够改变 setter 设置的值的唯一原因是触发器具有更高的优先级。没有权力根除低优先级来源提供的值(value)。

实现您在此处表达的特定目标的方法是反转触发器的意义 - 不要定义样式 setter ,并且仅在 IsMouseOver 时才使触发器处于事件状态。是假的。当然,在您可能想要执行此操作的所有可能情况下,这不会对您有所帮助。但是由于没有通用的解决方案,我认为您需要以自己的方式解决每个特定问题。

关于wpf - 是否可以使用 setter 将属性返回到其默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4707612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com