RevealBackgroundBrush中的Reveal高亮不起作用

时间:2019-07-31 08:09:15

标签: c# xaml uwp uwp-xaml uwp-c#

我尝试使用RevealBackgroundBrush,但是Reveal Highlight不起作用。

RevealBorderBrush的亮点是有效的。

sdk风格的RevealBackgroundBrush也可以工作(例如“ ButtonRevealStyle”),但是如果我在应用程序资源中复制ButtonRevealStyle并为按钮RevealBackgroundBrush应用样式,则不起作用。

我重新安装了Windows,并尝试在另一个uwp项目中使用笔刷,但不起作用

我尝试使用CSharp代码:

private void RevealGrid_Loaded(object sender, RoutedEventArgs e)
{
  var grid = sender as Grid;
  grid.Background = new RevealBackgroundBrush() {
    Color = Color.FromArgb(80, 0, 0, 0),
    TargetTheme = ApplicationTheme.Light,
    AlwaysUseFallback = false
  }; // grid.background
}

我尝试使用Xaml:

<Grid Height="48" VerticalAlignment="Top" Loaded="RevealGrid_Loaded" >
   <Grid.Background>
      <RevealBackgroundBrush AlwaysUseFallback="False" TargetTheme="Light" Color="#33818181" />
   </Grid.Background>
</Grid>

详细信息:

  • Visual Studio 2019

  • SDK 10.0.18362.0

  • Windows 10 Pro 1903(内部版本18362.239)

1 个答案:

答案 0 :(得分:1)

RevealBackgroundBrush是一种动态效果,并非独立存在。换句话说,RevealBackgroundBrush取决于状态

简单的Grid没有状态,因此RevealBackgroundBrush不起作用,但是我们可以将Grid用作有状态控件的模板容器,例如Button:

<Button Content="Yo!">
    <Button.Template>
        <ControlTemplate TargetType="Button">
            <Grid x:Name="Root" Width="100" Height="100">
                <Grid.Background>
                    <RevealBackgroundBrush/>
                </Grid.Background>
                <VisualStateManager.VisualStateGroups>
                    <VisualStateGroup x:Name="CommonStates">
                        <VisualState x:Name="Normal" />
                        <VisualState x:Name="PointerOver">
                            <VisualState.Setters>
                                <Setter Target="Root.(RevealBrush.State)" Value="PointerOver"/>
                            </VisualState.Setters>
                        </VisualState>
                        <VisualState x:Name="PointerOverPressed">
                            <VisualState.Setters>
                                <Setter Target="Root.(RevealBrush.State)" Value="Pressed"/>
                            </VisualState.Setters>
                        </VisualState>
                        <VisualState x:Name="Pressed">
                            <VisualState.Setters>
                                <Setter Target="Root.(RevealBrush.State)" Value="Pressed"/>
                            </VisualState.Setters>
                        </VisualState>
                    </VisualStateGroup>
                    <VisualStateGroup x:Name="DisabledStates">
                        <VisualState x:Name="Enabled"/>
                        <VisualState x:Name="Disabled">
                            <VisualState.Setters>
                                <Setter Target="Root.RevealBorderThickness" Value="0"/>
                            </VisualState.Setters>
                        </VisualState>
                    </VisualStateGroup>
                </VisualStateManager.VisualStateGroups>
                <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
            </Grid>
        </ControlTemplate>
    </Button.Template>

</Button>

我们使用VisualStateManager进行状态管理并调整Reveal的状态。

相同的原因也可以应用于其他控件。

最诚挚的问候。