C# 在wpf中使用触发器时检查属性
我的xaml中有一个触发器,当鼠标悬停在按钮上时,它可以更改按钮的文本C# 在wpf中使用触发器时检查属性,c#,wpf,xaml,C#,Wpf,Xaml,我的xaml中有一个触发器,当鼠标悬停在按钮上时,它可以更改按钮的文本 <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Foreground" Value="Cyan" /> </Trigger> </ControlTemplate.Triggers> 但是我希望如果
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Cyan" />
</Trigger>
</ControlTemplate.Triggers>
但是我希望如果按钮被禁用,颜色不会改变。当我在悬停状态下更改颜色时,是否有任何方法可以检查控制是否启用
Edit1
基于Bolu答案,我实现了这个多触发器:
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
<Condition Property="IsEnabled" Value="False"/>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Foreground" Value="Red" />
</MultiTrigger.Setters>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
<Condition Property="IsEnabled" Value="True"/>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Foreground" Value="Green" />
</MultiTrigger.Setters>
但它不能正常工作。
如果按钮处于禁用状态,触发器应将文本颜色更改为红色,如果按钮处于启用状态,则应将文本颜色更改为绿色。但当按钮被禁用时,颜色不会变为红色,但当按钮被启用时,颜色会变为绿色
如何更改xaml以使禁用部分也工作?禁用控件时外观的更改来自
按钮的默认控制模板。如果您提供自己的ControlTemplate
,就像您正在做的那样,那么应该覆盖该更改。或者,您可以只添加一个触发器
来处理IsEnabled
属性,以提供您自己的禁用外观:
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Cyan" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<!-- Put your disabled Style Setters here -->
</Trigger>
</ControlTemplate.Triggers>
您可以使用来检查它是否已启用
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
<Condition Property="IsEnabled" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Foreground" Value="Cyan" />
</MultiTrigger>
</ControlTemplate.Triggers>
根据您的编辑:
我想你可以把你的按钮包装在一个面板中
并使用面板
的IsMouseOver
加上按钮
IsEnabled
触发颜色,如果我把IsEnabled触发器放进去,当我禁用控件时,文本变为可读,但一旦我把鼠标放在按钮上,它就会变为青色。如何阻止这种情况发生?反转触发器的顺序。如何根据IsEnabled属性更改颜色?例如,在MouseOver上,如果控件被启用,将颜色更改为青色,如果控件被禁用,将颜色更改为红色?这是一个不同的问题,涉及到一个问题,但幸运的是@Bolu似乎回答了这个问题,而不是你在这篇文章中的实际问题。这是一个非常糟糕的节目,我的朋友。。。你问了一个我回答的问题。然后,在你得到了一个可接受的答案后,你改变了问题。这在这个网站上是很糟糕的做法。你一定很困惑。。。那个密码会完全符合你的要求。@伙计们,我想你最初的问题误导了我的答案。。。。我想您不希望在禁用按钮时触发IsMouseOver
的效果。您编辑的问题清楚地显示了相反的内容:IsMouseOver
在您的按钮被禁用时将不会被检测到。因此,我认为您可以将按钮包装在面板中
,并使用面板
的IsMouseOver
加上按钮
的启用
。