wpf 基本的xaml 事件觸發器注意事項
阿新 • • 發佈:2018-12-22
<Style x:Key="ButtonStyle1" TargetType="{x:Type Button}"> <Setter Property="BorderThickness" Value="0"/> <Setter Property="Height" Value="18" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Button}"> <Grid x:Name="grid" > <Rectangle x:Name="rectangle" Fill="#02FFFFFF"/> <Path x:Name="path" Data="M0.5,0.5 L9.5,0.5 L9.5,2.5 L0.5,2.5 z" Fill="White" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Center" Width="10" Height="3"/> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsPressed" Value="True"> <Setter Property="Fill" TargetName="rectangle" Value="#FF990D0B"/> </Trigger> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Fill" TargetName="rectangle" Value="#33FFFFFF"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style>
今天上班時候 寫一個很簡單的事件觸發事件,發現mousedown 事件死活觸發不了。 後面找了一下原因, 原來坑爹的跟書寫的順序有關係, 如果
mouse down 寫在第一個,就只能觸發mouse move 不能觸發 down 只能按順序, 先寫move 再寫down 才能按照順序觸發。 不知道是不是微軟的一個bug。
正確的做法就是把順序交換一下
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Fill" TargetName="rectangle" Value="#33FFFFFF"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Fill" TargetName="rectangle" Value="#FF990D0B"/>
</Trigger>