码迷,mamicode.com
首页 > 其他好文 > 详细

使用DataTrigger来代替Triggerr

时间:2018-07-07 22:27:39      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:mil   代码   binding   tom   鼠标   static   begin   html   www.   

原文:使用DataTrigger来代替Triggerr

普通的Trigger监听鼠标移入的代码如下:

  <Trigger Property="IsMouseOver" Value="true">

      <Setter .../>

  </Trigger>

而MultiTigger想实现,当属性等于某个值,同时鼠标移入时的需求:

    理论上,代码应该如下:

<MultiTrigger>
    <MultiTrigger.Conditions>
        <Condition Property="IsMouseOver" Value="True"/>
        <Condition Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsChecked}" Value="False"/>
    </MultiTrigger.Conditions>
    <MultiTrigger.EnterActions>
        <BeginStoryboard Storyboard="{StaticResource MouseEnter}"/>
    </MultiTrigger.EnterActions>
    <MultiTrigger.ExitActions>
        <BeginStoryboard Storyboard="{StaticResource MouseLeave}"/>
    </MultiTrigger.ExitActions>
</MultiTrigger>

  但实际运行起来会报如下错误Must have non-null value for ‘Property‘.

 

  所以我们需要转换一种方式,用MultiDataTrigger来实现上述的需求:

   代码如下:

    <MultiDataTrigger>
                <MultiDataTrigger.Conditions>
                    <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}" Value="True"/>
                    <Condition Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsChecked}" Value="True"/>
                </MultiDataTrigger.Conditions>
                <Setter TargetName="LayoutRoot" Property="Background" Value="Red"/>
            </MultiDataTrigger>

**将Trigger中的
 <Condition Property="IsMouseOver" Value="True"/> 转换成DataTrigger中的
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}" Value="True"/>
来实现我们的需求

 

使用DataTrigger来代替Triggerr

标签:mil   代码   binding   tom   鼠标   static   begin   html   www.   

原文地址:https://www.cnblogs.com/lonelyxmas/p/9278374.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!