【问题标题】:How to change the color of ellipse at mouse over of button WPF (c# ,wpf)如何在鼠标悬停在按钮 WPF 上时更改椭圆的颜色(c#,wpf)
【发布时间】:2015-01-28 09:12:56
【问题描述】:

我在按钮上添加了一个椭圆。 但截至目前,鼠标悬停在该按钮上时,我需要更改背景。 所以无法使用普通触发器,即在鼠标悬停事件上设置背景属性。

    <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>

【问题讨论】:

  • 我们无法更改按钮上方的元素..所以任何帮助
  • 你有没有在谷歌上搜索过这个。 TargetName="Elipse1"

标签: c# wpf


【解决方案1】:

您可以在模板中使用TemplateBinding 绑定Button.Background 属性并将默认值设置为Setter 的另一个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"/>

【讨论】:

    【解决方案2】:

    试试这个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>
    

    【讨论】:

      猜你喜欢
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多