使用DataTrigger來代替Triggerr
阿新 • • 發佈:2018-07-07
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