基于现有值计算的Setter值-WPF

基于现有值计算的Setter值-WPF,wpf,triggers,setter,Wpf,Triggers,Setter,目前有如下设置: <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="rectName" Property="Stroke" Value="Red"/> <Setter TargetName="rectName" Property="StrokeThickness" Value="2"

目前有如下设置:

<Trigger Property="IsMouseOver" Value="True">
    <Setter TargetName="rectName" Property="Stroke" Value="Red"/>                                            
    <Setter TargetName="rectName" Property="StrokeThickness" Value="2"/>                    
</Trigger>

i、 e.触发器将矩形的笔划和厚度更改为红色,鼠标悬停时为2。 但只有当矩形的笔划为黑色时(很少有矩形具有透明笔划),才会发生这种情况

有没有办法把这个条件加在塞特身上?我正在寻找一种不那么麻烦的方法来实现这一点。有线索吗

是否有如下构造:

<Setter TargetName="rectName" Property="Stroke" Value="If Black Then Black Else Red"/>                                            

您可以使用MultiTrigger实现这一点(下面的代码未经测试,但应该足够接近)


您可以使用MultiTrigger实现这一点(下面的代码未经测试,但应该足够接近)


在这里,这将起作用,但请注意,此代码将引发堆栈溢出异常,因为当您将鼠标悬停在ie上时,颜色会发生变化,例如红黑红黑等等:/I我建议使用其他方法跟踪rect状态,可能是ViewModel中跟踪状态的变量,以及代码替换中的变量:

<Condition  Binding="{Binding RelativeSource={RelativeSource Self}, Path=Stroke}" Value="Black" />

比如:

<Condition Binding="{Path=RectState}" Value="True" />

否则这将崩溃:)(很抱歉匆忙写下这篇文章)


在这里,这将起作用,但请注意,此代码将引发堆栈溢出异常,因为当您将鼠标悬停在ie上时,颜色会发生变化,例如红黑红黑等等:/I我建议使用其他方法跟踪rect状态,可能是ViewModel中跟踪状态的变量,以及代码替换中的变量:

<Condition  Binding="{Binding RelativeSource={RelativeSource Self}, Path=Stroke}" Value="Black" />

比如:

<Condition Binding="{Path=RectState}" Value="True" />

否则这将崩溃:)(很抱歉匆忙写下这篇文章)



它给出了一个错误
不能从属性触发器设置“Stroke”属性并同时显示在触发器的条件下。
您是对的,对此表示抱歉。我认为您将不得不使用valueconverter=(它给出了一个错误,
“Stroke”属性不能从属性触发器中设置并同时出现在触发器的状态中。
您是对的,对此表示抱歉。我认为您将不得不使用valueconverter来代替=(