2010-11-23 124 views
1

我的按钮应该在一定量的鼠标移过之后改变颜色,但是多重绑定无法正常工作。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"/>触发器停止工作。

回答

2

问题是,您正在比较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(); 
+0

谢谢!是的,我没有体育,我不会把它转换回字符串! – Vitalij 2010-11-23 13:33:09