基于现有值计算的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来代替=(