2017-01-19 86 views
0

我已經看到了幾個與我密切相關的問題,也許我只是很難理解。大約一週前我開始使用WPF。我的程序基於一組文件動態添加按鈕。一切都很好,除了我很難擺脫按鈕的默認鼠標懸停事件。我在創建按鈕時給出按鈕圖像背景,但鼠標懸停事件會使按鈕呈藍灰色。下面是我已經開始的一些代碼,也許我在正確的軌道上?用於覆蓋鼠標事件的Windows.Resource

感謝

<Window.Resources> 
    <Button x:Key="MoviePosterStyle"> 
     <Style> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="False">     
       </Trigger>      
      </Style.Triggers> 
     </Style> 
    </Button> 
</Window.Resources> 

回答

0

我認爲你需要做的按鈕模板的本地副本在這樣的風格:

<Style TargetType="Button"> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type ButtonBase}"> 
     <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True"> 
      <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
     </Border> 
     <ControlTemplate.Triggers> 
      <Trigger Property="Button.IsDefaulted" Value="True"> 
      <Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> 
      </Trigger> 
      <!--<Trigger Property="IsMouseOver" Value="True"> 
      <Setter Property="Background" TargetName="border" Value="#FFBEE6FD"/> 
      <Setter Property="BorderBrush" TargetName="border" Value="#FF3C7FB1"/> 
     </Trigger>--> 
      <Trigger Property="IsPressed" Value="True"> 
      <Setter Property="Background" TargetName="border" Value="#FFC4E5F6"/> 
      <Setter Property="BorderBrush" TargetName="border" Value="#FF2C628B"/> 
      </Trigger> 
      <Trigger Property="ToggleButton.IsChecked" Value="True"> 
      <Setter Property="Background" TargetName="border" Value="#FFBCDDEE"/> 
      <Setter Property="BorderBrush" TargetName="border" Value="#FF245A83"/> 
      </Trigger> 
      <Trigger Property="IsEnabled" Value="False"> 
      <Setter Property="Background" TargetName="border" Value="#FFF4F4F4"/> 
      <Setter Property="BorderBrush" TargetName="border" Value="#FFADB2B5"/> 
      <Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="#FF838383"/> 
      </Trigger> 
     </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 

然後刪除或outcomment的IsMouseOver觸發器,如上圖所示。