我尝试使用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)
答案 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的状态。
相同的原因也可以应用于其他控件。
最诚挚的问候。