• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

为什么此XAML无法按预期工作?

wpf 来源:pzogr 6次浏览

我很头痛,试图在鼠标移过它时改变按钮的默认行为。下面是部分代码: (我省略的代码,各种面板,并只保留代码感兴趣的面板)为什么此XAML无法按预期工作?

<Window.Resources> 
    <Style x:Key="leftPanelButtons" TargetType="{x:Type Button}"> 
     .... various setters go here .... 
     <Setter Property="Background" Value="ForestGreen"/> 

     <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="Background" Value="DarkSeaGreen"/> 
      </Trigger> 
     </Style.Triggers> 

    </Style> 

</Window.Resources> 

<DockPanel Grid.Row="2"> 
     <DockPanel Height="Auto" Width="Auto" VerticalAlignment="Stretch"> 
      <UniformGrid Columns="1" Height="Auto" VerticalAlignment="Stretch" MinWidth="150" Width="Auto"> 
       <UniformGrid.Resources> 
        <Style BasedOn="{StaticResource leftPanelButtons}" TargetType="Button"/> 
       </UniformGrid.Resources> 

       <Button> 
        button1 
       </Button> 

       <Button> 
        button2 
       </Button> 

       <Button> 
        button3 
       </Button> 

      </UniformGrid> 

      <StackPanel Height="Auto" Width="Auto" Background="PaleGoldenRod"> 

      </StackPanel> 
     </DockPanel> 
    </DockPanel> 

我期待按钮的背景颜色设置为森林绿和变化当鼠标移动到按钮上时,转到DarkSeaGreen。我确实获得了ForestGreen颜色,但是当我将鼠标移动到按钮上时,颜色变为浅蓝色变体。我有点复制了这个page的代码。

===========解决方案如下:

是的,它有点奇怪。要修改MouseOver上的按钮背景,您实际上必须更改ControlTemplate。请看这里:

How do you change Background for a Button MouseOver in WPF?


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)