如何解决NavigationView 当它是页面上唯一的东西时会给出一个例外
我正在使用新的 Project Reunion 0.5/WinUI3 Preview 5。从 Preview 4 升级后,我开始收到此错误:
Exception thrown at 0x76C5A8B2 in ReunionTest.exe: Microsoft C++ exception: winrt::hresult_error at memory location 0x00D7E290.
输出显示:
Exception thrown at 0x76C5A8B2 (KernelBase.dll) in ReunionTest.exe: 0x40080202: WinRT transform error (parameters: 0x8000000B,0x80070490,0x00000014,0x00D7BCCC).
'ReunionTest.exe' (Win32): Loaded 'C:\Windows\SysWOW64\Windows.Energy.dll'. Symbols loaded.
'ReunionTest.exe' (Win32): Loaded 'C:\Windows\SysWOW64\rmclient.dll'. Symbols loaded.
'ReunionTest.exe' (Win32): Loaded 'C:\Windows\SysWOW64\MrmCoreR.dll'. Symbols loaded.
'ReunionTest.exe' (Win32): Loaded 'C:\Windows\SysWOW64\Windows.StateRepositoryClient.dll'. Symbols loaded.
Exception thrown at 0x76C5A8B2 (KernelBase.dll) in ReunionTest.exe: 0x40080202: WinRT transform error (parameters: 0x8000000B,0x00D7C5C0).
ReunionTest.exe' (Win32): Loaded 'C:\Windows\SysWOW64\Windows.Graphics.dll'. Symbols loaded.
Exception thrown at 0x76C5A8B2 (KernelBase.dll) in ReunionTest.exe: 0x40080202: WinRT transform error (parameters: 0x8000000B,0x00D7D934).
Exception thrown at 0x76C5A8B2 (KernelBase.dll) in ReunionTest.exe: WinRT originate error - 0x80070490 : 'Windows.Graphics.Display: GetForCurrentView must be called on a thread that is associated with a CoreWindow.'.
onecore\com\combase\winrt\error\restrictederror.cpp(1016)\combase.dll!75E6AA06: (caller: 75D85230) ReturnHr(1) tid(3bbc) 8007007E The specified module could not be found.
Exception thrown at 0x76C5A8B2 in ReunionTest.exe: Microsoft C++ exception: winrt::hresult_error at memory location 0x00D7E290.
这就是所有的 XAML。
<Window
x:Class="ReunionTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:ReunionTest"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<NavigationView x:Name="NavView"
Grid.Row="0"
>
<Frame x:Name="NavFrame" />
</NavigationView>
</Grid>
</Window>
背后的代码。
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Controls.Primitives;
using Microsoft.UI.Xaml.Data;
using Microsoft.UI.Xaml.Input;
using Microsoft.UI.Xaml.Media;
using Microsoft.UI.Xaml.Navigation;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
// To learn more about WinUI,the WinUI project structure,// and more about our project templates,see: http://aka.ms/winui-project-info.
namespace ReunionTest
{
/// <summary>
/// An empty window that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainWindow : Window
{
public MainWindow()
{
this.InitializeComponent();
}
}
}
解决方法
<Application
x:Class="AAON.Ecat.WinUI.Reunion.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:AAON.Ecat.WinUI.Reunion"
xmlns:pb="using:AAON.Ecat.WinUI.Reunion.ResourceDictionaries"
RequestedTheme="Dark">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
<!-- Other merged dictionaries here -->
<pb:PageBackground />
</ResourceDictionary.MergedDictionaries>
<!-- Other app resources here -->
<SolidColorBrush x:Key="NavigationViewDefaultPaneBackground" Color="#F9F9F9" />
<SolidColorBrush x:Key="NavigationViewTopPaneBackground" Color="#F9F9F9" />
</ResourceDictionary>
</Application.Resources>
</Application>
添加两个 SolidColorBrush,奇怪的是,当您运行 Debug 时它应该停止崩溃。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。