相关疑难解决方法(0)

WPF按钮鼠标悬停图像

我正在学习C#和XAML来构建Windows应用程序.我想创建一个以图像为背景的按钮.但是当将鼠标悬停在按钮上时,按钮的背景应更改为另一个"突出显示"的图像.我试图将背景图像添加到Resources.resx中.我不得不使用xaml样式创建一个自定义按钮来摆脱wpf按钮的默认高亮效果.

我从SO上找到的一些代码创建了一个自定义按钮.代码是(在新的资源字典中):

    <!-- This style is used for buttons, to remove the WPF default 'animated' mouse over effect -->
    <Style x:Key="StartMenuButtons" TargetType="Button">
        <Setter Property="OverridesDefaultStyle" Value="True"/>
        <Setter Property="Margin" Value="5"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border Name="border" 
                        BorderThickness="0" 
                        Background="{TemplateBinding Background}">
                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">


                        <!-- UPDATE THE BUTTON BACKGROUND -->
                        <Setter Property="Background" Value="WHAT GOES HERE"  TargetName="border"/>


                    </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
Run Code Online (Sandbox Code Playgroud)

我放了什么,以便背景更改为另一个图像,无论是在我的resources.resx或其他位置?(不确定将图像放在何处访问它).我搜索了SO,但我找到的解决方案并不完全是我正在处理的问题.如果这是一个重复的问题,我道歉.

摘要:

如何在XAML中更改鼠标上按钮的背景图像?我在哪里放置图像以便可以在触发器代码中访问它?

更新 这是我作为触发操作,但图像不更新.我确保将图像构建操作设置为资源并将其放在名为Resources的文件夹中.

代码是:

<ControlTemplate.Triggers>
    <Trigger Property="IsMouseOver" Value="True">
        <Setter Property="Background">
          <Setter.Value> …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml wpf-controls

5
推荐指数
2
解决办法
4万
查看次数

为什么Button的背景会改变?

我是WPF的初学者,我甚至不知道在哪里寻找这个问题的答案.这个XAML对我来说非常简单:

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Grid>
    <Button>
      <Button.Style>
        <Style TargetType="{x:Type Button}">
        <Style.Triggers>
          <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Background" Value="Green"/>
          </Trigger>      
        </Style.Triggers>
        </Style>
      </Button.Style>
      <Button.Content>Test</Button.Content>
    </Button>
  </Grid>
</Page>
Run Code Online (Sandbox Code Playgroud)

当我将鼠标悬停在按钮上时,IsMouseOver更改为True触发器会使背景变为绿色.一瞬间.然后它变成蓝色.

更好的是:如果我将相同的setter附加到IsFocused属性,一旦我专注于按钮,背景颜色会在绿色和蓝色之间徘徊.

Button中有一些东西(我猜它是在Vista下使用的默认主题),这使得它以这种方式运行.我怀疑触发器需要设置另一个属性.但是什么?

wpf triggers styles button

4
推荐指数
2
解决办法
8746
查看次数

标签 统计

wpf ×2

button ×1

c# ×1

styles ×1

triggers ×1

wpf-controls ×1

xaml ×1