首页 > 解决方案 > 悬停时使元素背景变暗

问题描述

我不想为悬停或 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>

标签: xamlxamarinxamarin.formsuwpuwp-xaml

解决方案


我想将任何元素变暗 20%,或者我可以使用一个黑色的覆盖层,上面带有不透明度。

恐怕你不能为每个元素指定样式,一般情况下,我们需要编辑 PointerOver VisualState更改匹配的部分以使元素变暗,但它不能应用于所有元素,目前,修改样式更改PointerOver状态仅我们可以接近的方式。


推荐阅读