云母 material 未出现在次级 window
Mica material not showing up on secondary window
我在使用多 window UWP 应用程序时遇到一点问题。
我已将 Mica material 应用于我的页面,并且
当我 运行 我的程序时,第一个 window 与 Mica material 一起显示。
如果我点击 show second window,它会弹出,但背景是我的 system-accent-color,而不是 Mica material。
这里是我的 MainPage.xaml 代码:
<Page
x:Class="MultiWindowTest.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MultiWindowTest"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
muxc:BackdropMaterial.ApplyToRootOrPageBackground="True">
<Grid>
<Button Click="Button_Click" Content="New Window" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</Page>
MainPage.xaml.cs:
private async void Button_Click(object sender, RoutedEventArgs e)
{
AppWindow appWindow = await AppWindow.TryCreateAsync();
Frame appWindowContentFrame = new Frame();
appWindowContentFrame.Navigate(typeof(MainPage));
ElementCompositionPreview.SetAppWindowContent(appWindow, appWindowContentFrame);
await appWindow.TryShowAsync();
}
这也是一张图片,您可以看到第一个 window 有云母 material 而第二个只有我的强调色:
谁能解释一下这个现象?还是我做错了什么?还是 Microsoft 的错误?
Mica material not showing up on secondary window
看起来 BackdropMaterial
与 AppWindow
不兼容,请在 WinUI github 中继续 post 这个,目前有一个使用 [=13] 的解决方法=] 实现多个视图。并且 ApplicationView 可以在第二个视图中正确显示 BackdropMaterial
。
CoreApplicationView newView = CoreApplication.CreateNewView();
int newViewId = 0;
await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
Frame frame = new Frame();
frame.Navigate(typeof(MainPage), null);
Window.Current.Content = frame;
// You have to activate the window in order to show it later.
Window.Current.Activate();
newViewId = ApplicationView.GetForCurrentView().Id;
});
bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);
详情请参考document here。
我在使用多 window UWP 应用程序时遇到一点问题。
我已将 Mica material 应用于我的页面,并且 当我 运行 我的程序时,第一个 window 与 Mica material 一起显示。 如果我点击 show second window,它会弹出,但背景是我的 system-accent-color,而不是 Mica material。
这里是我的 MainPage.xaml 代码:
<Page
x:Class="MultiWindowTest.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MultiWindowTest"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
muxc:BackdropMaterial.ApplyToRootOrPageBackground="True">
<Grid>
<Button Click="Button_Click" Content="New Window" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</Page>
MainPage.xaml.cs:
private async void Button_Click(object sender, RoutedEventArgs e)
{
AppWindow appWindow = await AppWindow.TryCreateAsync();
Frame appWindowContentFrame = new Frame();
appWindowContentFrame.Navigate(typeof(MainPage));
ElementCompositionPreview.SetAppWindowContent(appWindow, appWindowContentFrame);
await appWindow.TryShowAsync();
}
这也是一张图片,您可以看到第一个 window 有云母 material 而第二个只有我的强调色:
谁能解释一下这个现象?还是我做错了什么?还是 Microsoft 的错误?
Mica material not showing up on secondary window
看起来 BackdropMaterial
与 AppWindow
不兼容,请在 WinUI github 中继续 post 这个,目前有一个使用 [=13] 的解决方法=] 实现多个视图。并且 ApplicationView 可以在第二个视图中正确显示 BackdropMaterial
。
CoreApplicationView newView = CoreApplication.CreateNewView();
int newViewId = 0;
await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
Frame frame = new Frame();
frame.Navigate(typeof(MainPage), null);
Window.Current.Content = frame;
// You have to activate the window in order to show it later.
Window.Current.Activate();
newViewId = ApplicationView.GetForCurrentView().Id;
});
bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);
详情请参考document here。