使按钮在鼠标悬停时透明

2024-01-09

我正在使用 Microsoft Visual Studio Express 2012 构建 Metro 风格应用程序。我对此应用程序非常陌生,需要帮助。我在 XAML 中定义了一个按钮,按钮背景是从图像设置的。将鼠标悬停在按钮上时,会将其背景更改为空白。我想改变它,使鼠标悬停时图像大约 50% 透明。那可能吗?有什么帮助吗?谢谢。

我已声明该按钮如下:

<Button Height="100" Width="100" Margin="0,0,0,0">
  <Button.Background>
    <ImageBrush ImageSource="../Images/home.png"></ImageBrush>
  </Button.Background>
</Button>

Windows 应用商店应用程序不存在交互性 dll。您应该改用视觉状态。使用 Blend 很容易实现。

如果您在 Blend 中打开应用程序并编辑按钮模板的副本,您最终将在 xaml 中获得完整的默认按钮样式。您只需编辑 PointerOver 视觉状态即可实现您想要的效果。

您的按钮将如下所示:

<Button Height="100" Width="100" Margin="0,0,0,0" Style="{StaticResource ButtonStyle1}">
    <Button.Background>
        <ImageBrush ImageSource="/Assets/Images/home.png"></ImageBrush>
    </Button.Background>
</Button>

并且您必须在应用程序的资源中定义样式,以便您可以在任何地方使用它。

在下面的代码中,查看 PointerOver 视觉状态。它定义按钮进入该状态时应如何变化。在这里,我们说边框(即显示背景图像的内容)的不透明度应该为 0.5 :

<DoubleAnimation Duration="0" To="0.5" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="Border" d:IsOptimized="True"/>

这是完整的样式:

<Style x:Key="ButtonStyle1" TargetType="Button">
    <Setter Property="Background" Value="{StaticResource ButtonBackgroundThemeBrush}"/>
    <Setter Property="Foreground" Value="{StaticResource ButtonForegroundThemeBrush}"/>
    <Setter Property="BorderBrush" Value="{StaticResource ButtonBorderThemeBrush}"/>
    <Setter Property="BorderThickness" Value="{StaticResource ButtonBorderThemeThickness}"/>
    <Setter Property="Padding" Value="12,4,12,4"/>
    <Setter Property="HorizontalAlignment" Value="Left"/>
    <Setter Property="VerticalAlignment" Value="Center"/>
    <Setter Property="FontFamily" Value="{StaticResource ContentControlThemeFontFamily}"/>
    <Setter Property="FontWeight" Value="SemiBold"/>
    <Setter Property="FontSize" Value="{StaticResource ControlContentThemeFontSize}"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Grid>
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Normal"/>
                            <VisualState x:Name="PointerOver">
                                <Storyboard>
                                    <DoubleAnimation Duration="0" To="0.5" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="Border" d:IsOptimized="True"/>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Pressed">
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Border">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedBackgroundThemeBrush}"/>
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedForegroundThemeBrush}"/>
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Disabled">
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Border">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonDisabledBackgroundThemeBrush}"/>
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="Border">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonDisabledBorderThemeBrush}"/>
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonDisabledForegroundThemeBrush}"/>
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>
                        <VisualStateGroup x:Name="FocusStates">
                            <VisualState x:Name="Focused">
                                <Storyboard>
                                    <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="FocusVisualWhite"/>
                                    <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="FocusVisualBlack"/>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Unfocused"/>
                            <VisualState x:Name="PointerFocused"/>
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                    <Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Margin="3">
                        <ContentPresenter x:Name="ContentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" ContentTransitions="{TemplateBinding ContentTransitions}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                    </Border>
                    <Rectangle x:Name="FocusVisualWhite" IsHitTestVisible="False" Opacity="0" StrokeDashOffset="1.5" StrokeEndLineCap="Square" Stroke="{StaticResource FocusVisualWhiteStrokeThemeBrush}" StrokeDashArray="1,1"/>
                    <Rectangle x:Name="FocusVisualBlack" IsHitTestVisible="False" Opacity="0" StrokeDashOffset="0.5" StrokeEndLineCap="Square" Stroke="{StaticResource FocusVisualBlackStrokeThemeBrush}" StrokeDashArray="1,1"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使按钮在鼠标悬停时透明 的相关文章

随机推荐

  • 访问超类类型成员对象的受保护成员 - 一个优雅的解决方案

    首先 我知道我做不到 而且我认为这不是重复的问题 this https stackoverflow com questions 477829 cannot call base class protected functions and th
  • Seaborn 绘图未显示

    我一直在尝试使用 Seaborn 绘制一个简单的条形图 奇怪的是 之前的情节有效 但这些情节没有出现 没有抛出任何错误 据我所知 代码没问题 也许更有经验的眼睛就能发现错误 import pandas as pd import numpy
  • 有没有一种简单的方法来合并 C# 匿名对象

    假设我有两个这样的匿名对象 var objA new test test blah blah var objB new foo foo bar bar 我想将它们结合起来得到 new test test blah blah foo foo
  • 如何在发布模式下调试

    有没有办法在 Xamarin 中以发布模式调试应用程序 当我在发布模式下开始调试时 它只运行应用程序而不启动调试器 我问这个问题 因为应用程序在调试器模式下工作 但在发布模式下崩溃 确实没有充分的理由debug in a Release配置
  • Android更改listview项目文本颜色

    我正在尝试根据 flag 更改列表视图中的某些项目文本颜色 或背景颜色 经过长时间的搜索 我没有找到如何做到这一点 我在特定操作后调用以下循环来更改颜色 ListView listView ListView findViewById R i
  • 如何使用rack-mini-profiler 分析返回json 响应的rails 控制器?

    我在 Rails 3 2 项目中使用rack mini profiler 在宝石文件中 gem rack mini profiler 一切都很好 但我的应用程序主要是一组 json 端点 因此 虽然能够检查 html 页面的性能非常有用 但
  • 使用 JavaScript 生成 RSA 密钥?

    有没有办法使用 JavaScript 生成私钥和公钥 我需要数据库中的这些密钥 开始 RSA 私钥 MIICXQIBAAKBgQDlOJu6TyygqxfWT7eLtGDwajtNFOb9I5XRb6khyfD1Yt3YiCgQ WMNW6
  • 通过外部实体在刷新时例外的 Doctrine OneToOne 身份

    I have User and UserProfileOneToOne 相关的 Doctrine ORM 实体 他们应该永远成对存在 不应该有User没有UserProfile User 应该从自动增量中获取其 id 而 UserProfi
  • 如何使用社区服务器连接器扩展在 VSC 上启动 Tomcat 8.5 服务器

    我正在尝试在 VSC 上设置 Tomcat 服务器 因为它无法在 IntelliJ 上运行 因为我没有终极版本 但我没有使用 Community Server Connector 的经验 我的同事也没有 我们所有的文档都是为 Tomcat
  • 缺少 Maven 插件 Jetty

    我在执行此操作时遇到问题http hrycan com 2012 03 28 primefaces lazy loading datatable for jsf2 http hrycan com 2012 03 28 primefaces
  • 来自共享或操作扩展 ios 的网络请求

    我已经搜索过这个标题 但没有找到任何合适的信息 我找到了发出网络请求的方法 将其结果发送到包含应用程序的应用程序 但是 我想直接得到分机的响应并在那里显示信息 我遇到过一些使用 javascript 访问网页的方法 但没有向后端发出请求 是
  • 如何用javascript从pdf文件中提取文本? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 所以我想知道是否有一种方法可以在javascript中从pdf中提取文本 我已经调查了一些 npm 模块 例如 PDF TO TEXT
  • 如何在Windows不分配驱动器号的情况下创建分区?

    我正在尝试通过 Windows API 对附加的虚拟硬盘进行初始化和分区 我已经成功使用设备Io控制 http msdn microsoft com en us library windows desktop aa363216 28v vs
  • Google Adwords CSP(内容安全政策)img-src

    中包含哪些域 协议img src是否需要 Content Security Policy 标头指令才能允许 Google AdWords 转化跟踪 从测试来看 当我们打电话时google trackConversion 看起来浏览器会创建一
  • JDK16 和 Mac OS 上的 Mockito - 无法初始化插件

    java lang IllegalStateException Could not initialize plugin interface org mockito plugins MockMaker alternate null Cause
  • 测试 angular2 dart 组件

    我写了一个组件并想测试它 如何从组件编写测试 有没有 Angular dart 的测试框架 您可以使用test https pub dartlang org packages test包含实验测试实现的包https github com d
  • 防止我的nodejs服务器中的xhr攻击[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在开发一个将与客户端移动应用程序
  • Redux 中间件工作一半,但未完全取消操作

    我有一些简单的中间件 可以工作 但也不能工作 基本上我有一个用户列表 我正在尝试删除一个 然后与 firebase 同步 一切都很好 我添加了一些中间件 以便当用户删除一个中间件时 它会询问您是否确定 只需使用一个简单的alert目前 如果
  • 基于 WPF DataGrid 中的 DataGridTemplateColumn 设置列样式

    我正在使用 WPF DataGrid 其中如果该行可编辑 其中一列需要显示 编辑 超链接 这由该行的支持模型中的布尔标志指示 我能够使用 DataGridTemplateColumn 实现这一点 没有问题 然而 对整行的附加要求是在选择该行
  • 使按钮在鼠标悬停时透明

    我正在使用 Microsoft Visual Studio Express 2012 构建 Metro 风格应用程序 我对此应用程序非常陌生 需要帮助 我在 XAML 中定义了一个按钮 按钮背景是从图像设置的 将鼠标悬停在按钮上时 会将其背