繁体   English   中英

如何在WPF按钮(c#,wpf)的鼠标悬停时更改椭圆的颜色

[英]How to change the color of ellipse at mouse over of button WPF (c# ,wpf)

我在按钮上添加了一个椭圆。 但截至目前,将鼠标悬停在该按钮上时,我需要更改背景。 因此可能无法正常触发,即在鼠标悬停事件上设置背景属性。

    <Style x:Key="RButton" TargetType="Button">
            <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Grid>                          
                        <Ellipse x:Name="Elipse1" Fill="Red" ></Ellipse>
                        <ContentPresenter  HorizontalAlignment="Center"                VerticalAlignment="Center"></ContentPresenter>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
            </Setter>
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value = "Orange"/>
                </Trigger>
        </Style.Triggers>
    </Style>

您可以在TemplateBinding内部使用TemplateBinding来绑定Button.Background属性,并将默认值Setter为您的Style另一个Setter

<Style x:Key="RButton" TargetType="Button">
   <Setter Property="Background" Value="Red"/>
   <Setter Property="Template">
      <Setter.Value>
         <ControlTemplate TargetType="Button">
            <Grid>                          
               <Ellipse x:Name="Elipse1" Fill="{TemplateBinding Background}" />
               <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
            </Grid>
         </ControlTemplate>
      </Setter.Value>
   </Setter>
   <Style.Triggers>
      <Trigger Property="IsMouseOver" Value="True">
         <Setter Property="Background" Value="Orange"/>
      </Trigger>
   </Style.Triggers>
</Style>

或者,如果您不想使用Button.Background属性,则可以按名称定位Ellipse

<Setter TargetName="Elipse1" Property="Background" Value="Orange"/>

试试这个Style

 <Style x:Key="RButton" TargetType="Button">
     <Setter Property="Template">
         <Setter.Value>
             <ControlTemplate TargetType="Button">
                 <Grid>
                     <Ellipse x:Name="Elipse1" Fill="Red" ></Ellipse>
                     <ContentPresenter  HorizontalAlignment="Center" VerticalAlignment="Center"></ContentPresenter>
                 </Grid>
                 <ControlTemplate.Triggers>
                     <Trigger Property="IsMouseOver" Value="True">
                         <Setter Property="Fill" Value = "Orange" TargetName="Elipse1" ></Setter>
                     </Trigger>
                 </ControlTemplate.Triggers>
             </ControlTemplate>
         </Setter.Value>
     </Setter>
 </Style>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM