使按钮在鼠标悬停时透明

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(使用前将#替换为@)

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

  • TFS 2012 - 如何判断变更集是否经过代码审查?

    我们最近开始使用 Team Foundation Server 2012 并使用代码审查功能让其他开发人员审查代码更改 看起来效果很好 然而 作为项目负责人 我希望能够看到给定的变更集已被其他人审查 例如 假设开发人员 Bob 进行了更改并
  • 将可见性属性绑定到变量

    我有一个Border with Label里面一个Window
  • XAML - 带有触发器/参数的通用文本框样式?

    我希望能够拥有一个通用样式模板 可以根据布尔值切换文本框的颜色 但我不想为每个文本框创建独特的样式 我该怎么做呢 我在下面放置了一些示例代码 我希望它如何工作 三个文本框 均具有不同的绑定 但尝试使用相同的模板基于布尔值选择红色或绿色 Th
  • 无法将 User32.dll 导入 Visual Studio

    I tried To add 用户32 dll from 参考管理器 并将其导入自Windows System32 user32 dll I got 错误信息 无法添加对 C Windows System32 user32 dll 的引用
  • 如何使用 OpenXML 包自动调整 Excel 列

    此代码使用 openxml 包生成 Excel 电子表格 请任何人告诉如何自动调整其列宽 OpenXmlPackage SpreadsheetDocument spreadsheetDocument OpenXmlPackage Sprea
  • WPF 按钮单击事件不起作用

    我有一个按钮 其中包含网格内的图像 我的问题是我无法制作该按钮Click活动工作 我的 XAML 代码
  • 如何在针对 Windows XP 的情况下使用 VS2012 构建 Qt 4/5?

    我正在尝试使用 Visual Studio 2012 构建 Qt 4 8 5 Qt 5 2 1 针对 Windows XP SDK v7 1a 使用 VS2102 编译时 源代码与 SDK v7 1a 存在各种不兼容性 因此无法开箱即用 这
  • 如何在c# wpf中获取元素的标签?

    我正在尝试使用 WPF 构建一个 GUI 在其中我可以绘制一些基本形状并将它们存储到 xml 文件中 形状是在 xaml 文件中设计的 我为每个形状添加了标签 现在我想在代码中获取它们的标签值 并将其作为属性存储在输出 xml 文件中 例如
  • pubxml Web 发布工具事件生命周期

    我正在使用 Visual Studio 2012 中的 Web 发布工具发布到文件系统 我了解到我可以打开 Properties 文件夹中的 pubxml 来执行更高级的操作 我想要做的是在发布任务结束时运行命令行应用程序 我通常会在自定义
  • 控制不同的DataContext

    控制WPF中不同的DataContext 因为我可以在不同的选项卡中部署多个 DataContext 并控制当前的 DataContext 我在用着Mvvm Light WPF4我有不同的 ViewModels View 但我不知道如何处理
  • TargetType="controlType" 和 TargetType="{x:Type controlType}" 之间的区别

    在 WPF 中 您可以设置TargetType类型的名称 或者您可以将其设置为 x Type nameOfType 有谁知道有什么区别 没有什么 由于属性类型是Type XAML 解析器知道尝试将您提供的任何内容转换为Type 在其他情况下
  • 如何安装 python-Levenshtein windows

    我看到有人问了一个关于在 python 中安装 levenshtein 的类似问题 但另一个用户指示我启动自己的问题 所以就这样了 我运行的是 Windows 8 64 位 当我尝试安装 Levenshtein 时 出现以下错误 C Pyt
  • 为什么我的 COM 对象不显示组件服务中的方法?

    我正在尝试创建一个 COM 对象并将其注册到 COM 下 一切似乎都很顺利 但是当我查看组件服务并深入了解时 控制台根目录 组件服务 电脑 我的电脑 COM 应用程序 测试通讯 组件 TestCom Com MyCom 接口 MyCom 方
  • 使用 INotifyPropertyChanged

    有人可以解释一下为什么在 wpf 中使用绑定时需要使用 INotifyPropertyChanged 的 实现吗 我可以在不实现此接口的情况下绑定属性吗 例如我有代码 public class StudentData INotifyProp
  • 滚动到 ScrollViewer 末尾的最佳方法

    目前 当我添加新项目时 我让代码自动滚动到末尾的唯一方法如下 XAML
  • 隐藏 MediaPlayer 控件(Microsoft 媒体平台播放器框架)

    我在 c xaml 应用程序中使用 MMP PF 提供我自己的控制元素来处理播放器 这就是为什么我想隐藏 禁用出现在底部的本机控件 在屏幕截图的屏幕中间 这只是使用了一个主题 有人知道该怎么做吗 我没能找到合适的房产 像这样使用 axWin
  • TRACKER:错误TRK0005:无法找到:“CL.exe”。该系统找不到指定的文件

    我尝试在 Windows 8 上的 Node js 项目中执行以下命令 npm 安装 电子邮件受保护 cdn cgi l email protection 但我收到一个错误 我不知道如何处理 TRACKER 错误TRK0005 无法找到 C
  • 特定设备的不同字体大小

    我目前正在开发通用应用程序 我需要分别处理移动设备和桌面的文本框字体大小 我找到了一些方法 但都不能解决问题 使用 VisualStateManager 和 StateTrigger 为例
  • 如何从 Visual Studio 2012 导出 C# 应用程序以在其他计算机上运行?

    我刚刚在 Visual Studio 2012 中制作了我的第一个 C 应用程序 我想以某种方式导出它 以便其他人可以在他们的计算机 包括没有 Visual Studio 2012 的计算机 中使用它 我该怎么做 我是 C 新手 找不到任何
  • 如何在 Surface 上测试 Windows8 应用程序

    如何将我构建的 Windows8 应用程序移植到 Surface 上 我已经使用 Visual Studio 构建了该应用程序 只需按 F5 即可在桌面计算机上对其进行良好的测试 如何将其放到 Surface 上进行测试 而无需将其发布到商

随机推荐

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

    首先 我知道我做不到 而且我认为这不是重复的问题 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 中定义了一个按钮 按钮背景是从图像设置的 将鼠标悬停在按钮上时 会将其背