C# 在wpf中使用触发器时检查属性

C# 在wpf中使用触发器时检查属性,c#,wpf,xaml,C#,Wpf,Xaml,我的xaml中有一个触发器,当鼠标悬停在按钮上时,它可以更改按钮的文本 <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Foreground" Value="Cyan" /> </Trigger> </ControlTemplate.Triggers> 但是我希望如果

我的xaml中有一个触发器,当鼠标悬停在按钮上时,它可以更改按钮的文本

<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
加上
按钮
启用