xaml - 悬停时使元素背景变暗
问题描述
我不想为悬停或 PointerOver 上的每个按钮定义颜色和样式。我想将任何元素变暗 20%,或者我可以使用一个黑色的覆盖层,上面带有不透明度。我在 ControlTemplate 上查看了 VisualStates,还使用了显示高亮、显示焦点和丙烯酸树脂,但无法使其正常工作。UWP 不允许这样做吗?我可以在 XAML 或 C# 代码中使用它。有人可以指出我正确的方向或展示他们项目中与我想做的类似的例子吗?在下面的代码中,我删除了视觉状态上的默认指针,因为它看起来很糟糕。谢谢。
<ControlTemplate x:Key="DefaultButtonControlTemplate" TargetType="Button">
<Grid x:Name="RootGrid" Background="{TemplateBinding Background}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="PointerOver"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ContentPresenter
x:Name="ContentPresenter"
AutomationProperties.AccessibilityView="Raw"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
ContentTemplate="{TemplateBinding ContentTemplate}"
ContentTransitions="{TemplateBinding ContentTransitions}"
Content="{TemplateBinding Content}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
Padding="{TemplateBinding Padding}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
TextWrapping="WrapWholeWords"/>
</Grid>
</ControlTemplate>
解决方案
我想将任何元素变暗 20%,或者我可以使用一个黑色的覆盖层,上面带有不透明度。
恐怕你不能为每个元素指定样式,一般情况下,我们需要编辑 PointerOver
VisualState
更改匹配的部分以使元素变暗,但它不能应用于所有元素,目前,修改样式更改PointerOver
状态仅我们可以接近的方式。
推荐阅读
- azure-cosmosdb - 如何在 ARM 模板中获取为表 API 创建的 cosmos DB 的连接字符串
- javascript - 如何使用 AJAX 将值表单控制器放入弹出窗口
- php - Laravel 通过使用多态关系在 Laravel 中查询(函数 find() )
- javascript - 如何遍历多个 json 数组,对其特定字段执行函数并将收集到的结果返回到 api 中?
- python - PyTorch GAN RuntimeError:在 DataLoader 工作进程 0 中捕获 RuntimeError
- blazorinputfile - 如何在 Blazor Web 程序集中获取 BlazorInputFile 的完整目录路径
- javascript - 如何从维基百科页面 URL 获取页面标题?
- swift - 类型的值没有成员委托错误
- c - MISRA:复合赋值运算符
- python-3.x - PyCharm 版本。Community 2020.2 调试器按钮(Step over、Step into code...)不起作用?