我找不到使用丙烯酸口音(CreateBackdropBrush)的详细文件。我在StackOverflow中找到了一个StackOverflow,它有点有用,但它无助于开始工作。因此,请为这个帖子创建一个详细的答案,以便每个人都可以学习。
更新:
微软发布了一份正式的丙烯酸材料文档
注:
如果有人不知道丙烯酸口音。丙烯酸口音是Windows 10创建者更新的新功能,它允许应用背景模糊透明。


发布于 2017-04-30 21:17:10
创建者更新
XAML
您需要使用应用程序背景上的组件,比如RelativePanel
<RelativePanel Grid.Column="0" Grid.ColumnSpan="2" MinWidth="40" x:Name="MainGrid" SizeChanged="Page_SizeChanged"/>
<RelativePanel Grid.Column="0" Width="{Binding ElementName=MainGrid,Path=Width}" Background="#28000000"/>
<Grid>
<!--Having content here, for example textblock and so on-->
</Grid>第二个RelativePanel用于设置模糊上方的阴影颜色。
.CS
然后可以使用以下代码:
private void applyAcrylicAccent(Panel panel)
{
_compositor = ElementCompositionPreview.GetElementVisual(this).Compositor;
_hostSprite = _compositor.CreateSpriteVisual();
_hostSprite.Size = new Vector2((float) panel.ActualWidth, (float) panel.ActualHeight);
ElementCompositionPreview.SetElementChildVisual(panel, _hostSprite);
_hostSprite.Brush = _compositor.CreateHostBackdropBrush();
}
Compositor _compositor;
SpriteVisual _hostSprite;使用applyAcrylicAccent(MainGrid);调用它时,还需要处理SizeChanged事件:
private void Page_SizeChanged(object sender, SizeChangedEventArgs e)
{
if (_hostSprite != null)
_hostSprite.Size = e.NewSize.ToVector2();
}当然,您需要在Creator上运行它,CreateHostBackdropBrush()不能在移动设备上工作,也不能在平板模式下工作。
此外,考虑到面板或网格,您设置的丙烯酸颜色将无法显示任何控制(就我已经测试过)。所以你需要在没有任何控制的情况下使用你的相对面板。
透明标题栏
可以使用以下代码设置标题栏的透明度
ApplicationViewTitleBar formattableTitleBar = ApplicationView.GetForCurrentView().TitleBar;
formattableTitleBar.ButtonBackgroundColor = Colors.Transparent;
CoreApplicationViewTitleBar coreTitleBar = CoreApplication.GetCurrentView().TitleBar;
coreTitleBar.ExtendViewIntoTitleBar = true;这里是上面代码生成的一个例子(还添加了一些其他内容)。

秋季更新10.0.16190及以上
正如贾斯汀XL在下面的回答中提到的,从构建16190及以上开始,开发人员可以访问位于Windows.UI.Xaml.Media (丙烯酸API)的不同丙烯酸刷和Microsoft:丙烯酸材料指南的指导方针。
https://stackoverflow.com/questions/43699256
复制相似问题