1. 程式人生 > >Button中使用模板後,Trigger中使用MouseOver時候,滑鼠滑動時候不能觸發響應

Button中使用模板後,Trigger中使用MouseOver時候,滑鼠滑動時候不能觸發響應

專案中遇到在重寫Window類,自定義一個最大,最小和關閉按鈕。此時出現一個問題,繪製最小按鈕的橫線的時候,MouseOver有觸發修改背景顏色,但是實際滑鼠划過去後,只有觸到橫線的時候才會觸發那個Trigger。但是提前設定了背景後就不會。

解決方法:將Border的Background設定成“Transparent”.

<Style x:Key="ButtonMinStyle" TargetType="{x:Type Button}">
        <Setter Property="Control.Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Border Name="bor1" BorderThickness="0"  CornerRadius="2"   SnapsToDevicePixels="True"   Height="22" Width="22" Background="Transparent">
                        <Path  Margin="4" Data="M5 10 L5,10 10 10" Fill="#FFF4F4F5" Stretch="Fill" Stroke="White"
                                StrokeThickness="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="true" SourceName="bor1">
                            <Setter Property="Background" Value="Red" TargetName="bor1"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>