MultiTrigger只执行一次
问题描述:
我的按钮应该在一定量的鼠标移过之后改变颜色,但是多重绑定无法正常工作。MultiTrigger只执行一次
按钮在我的应用有以下样式:
<Style TargetType="Button">
<EventSetter Event="MouseEnter" Handler="OnMouseEnterButton"/>
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="Content" Value="0"/>
<Condition Property="IsMouseOver" Value="False"/>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Background" Value="Green"/>
</MultiTrigger.Setters>
</MultiTrigger>
</Style.Triggers>
</Style>
我的按钮看起来是这样的:
<Button Name="button1">1</Button>
用下面的事件处理程序:
private void OnMouseEnterButton(object sender, RoutedEventArgs e)
{
((Button)sender).Content = (int.Parse(((Button)sender).Content.ToString())) + 1;
}
但是如果该值Button.Content条件与初始值不同。例如:<Condition Property="Content" Value="10"/>
触发器停止工作。
答
问题是,您正在比较System.Int32
值(在代码中设置)和System.String
值(在条件中定义)。
有两种方法来解决这个问题:
1)选择风格条件:
<Condition Property="Content">
<Condition.Value>
<sys:Int32>10</sys:Int32>
</Condition.Value>
</Condition>
,你必须添加命名空间xmlns:sys="clr-namespace:System;assembly=mscorlib"
,或者你的代码更改为:
((Button)sender).Content = ((int.Parse(((Button)sender).Content.ToString())) + 1).ToString();
谢谢!是的,我没有体育,我不会把它转换回字符串! – Vitalij 2010-11-23 13:33:09