1. 程式人生 > >使用DataTrigger來代替Triggerr

使用DataTrigger來代替Triggerr

con stat null huang oar html for smo 使用

原文:使用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