首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF MultiDataTrigger不工作

WPF MultiDataTrigger不工作
EN

Stack Overflow用户
提问于 2016-07-30 19:19:16
回答 1查看 646关注 0票数 1

所以我有一个多边形:

代码语言:javascript
复制
<Polygon Points="1.875,0.875 2.75,13.875 18.875,11 16.625,-3.375 1.875,0.875 "
             Style="{ StaticResource BlockView}"
             Name="KEY_1"
             Canvas.Left="35"
             Canvas.Top="211"
             attachedproperty:UtilityFunctions.IsDualModeActive="{Binding  GetDevice.SelectedProfile.IsDualMode,Mode=TwoWay}" />

我希望多边形的笔划根据IsMouseOver属性和attached属性的值进行更改,如下所示:

代码语言:javascript
复制
public static readonly DependencyProperty IsDualModeActiveProperty = DependencyProperty.RegisterAttached(
                                                                        "IsDualModeActive",
                                                                        typeof(Boolean),
                                                                        typeof(UtilityFunctions)
        );
    public static void SetIsDualModeActive(UIElement element, Boolean value)
    {
        element.SetValue(IsDualModeActiveProperty, value);
    }
    public static Boolean GetIsDualModeActive(UIElement element)
    {
        return (Boolean)element.GetValue(IsDualModeActiveProperty);
    }

附加的属性被绑定到我的ViewModel中的一个属性,正如您在多边形代码中看到的那样。然后我在样式资源中定义了这个触发器:

代码语言:javascript
复制
 <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver }"
                                   Value="True" />
                        <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsDualModeActive }"
                                   Value="False" />
                    </MultiDataTrigger.Conditions>
                    <MultiDataTrigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <ColorAnimation  Storyboard.TargetProperty="Stroke.Color"
                                                 To="#73BB00"
                                                 Duration="{StaticResource controlTransitionEnterDuration}" />
                            </Storyboard>
                        </BeginStoryboard>
                    </MultiDataTrigger.EnterActions>
                    <MultiDataTrigger.ExitActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <ColorAnimation Storyboard.TargetProperty="Stroke.Color"
                                                Duration="{StaticResource controlTransitionEnterDuration}" />
                            </Storyboard>
                        </BeginStoryboard>
                    </MultiDataTrigger.ExitActions>
                    <Setter Property="Opacity" Value="3" />
                </MultiDataTrigger>

问题是我已经检查了mouseover和attachedproperty的值,它们满足触发条件,但是多边形的笔划没有改变。我在这里遗漏了什么吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-31 00:03:04

使用属性路径指定附加属性时,还必须使用括号语法指定定义该属性的类型:

代码语言:javascript
复制
<Condition Binding="{Binding RelativeSource={RelativeSource Self},
     Path=(attachedproperty:UtilityFunctions.IsDualModeActive)}" Value="False" />
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38673342

复制
相关文章

相似问题

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