首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MultiTrigger只执行一次

MultiTrigger只执行一次
EN

Stack Overflow用户
提问于 2010-11-23 12:06:18
回答 1查看 510关注 0票数 1

我的按钮应该改变颜色后,一定数量的鼠标过渡,但多重绑定不能正常工作。

我的应用程序中的按钮具有以下样式:

代码语言:javascript
复制
    <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>

我的按钮看起来是这样的:

代码语言:javascript
复制
<Button Name="button1">1</Button>

使用以下事件处理程序:

代码语言:javascript
复制
private void OnMouseEnterButton(object sender, RoutedEventArgs e)
{
    ((Button)sender).Content = (int.Parse(((Button)sender).Content.ToString())) + 1;
}

但是,如果Button.Content条件的值与初始值不同。例如:<Condition Property="Content" Value="10"/>触发器停止工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-23 12:34:13

问题是,您正在比较一个System.Int32值(在代码中设置)和一个System.String值(在条件中定义)。

有两种方法可以解决这个问题:

1)将样式条件更改为:

代码语言:javascript
复制
    <Condition Property="Content">
        <Condition.Value>
            <sys:Int32>10</sys:Int32>
        </Condition.Value>
    </Condition>

必须在其中添加名称空间xmlns:sys="clr-namespace:System;assembly=mscorlib"

或将代码更改为:

代码语言:javascript
复制
((Button)sender).Content = ((int.Parse(((Button)sender).Content.ToString())) + 1).ToString();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4255831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档