【问题标题】:WInUI 3.0 Desktop - Crash on exception when try to navigateWInUI 3.0 桌面 - 尝试导航时出现异常崩溃
【发布时间】:2021-12-24 14:04:18
【问题描述】:

我想换帧,但我得到了这个异常:

导航:

Frame rootFrame = new Frame();
rootFrame.Navigate(typeof(ScoreWindow), null, new EntranceNavigationTransitionInfo());

构造函数出现异常:

        public ScoreWindow()
        {
            this.InitializeComponent();
            results = new List<Result>();
            playerList = new();
            LoadData();
            var _resultsView = ConvertToView();
            sfDataGrid.ItemsSource = _resultsView;
        }

感谢您的提前答复,祝您节日快乐!

附:感谢 Raymond,我检测到了这条消息:

WinUI: Error creating second Desktop Window on the current process. No more than one Desktop Window is allowed per process.

还有一个问题:如何将当前帧更改为其他帧?我的意思是,我有登录视图,用户成功登录并想查看数据/其他内容。

【问题讨论】:

  • 这是一个存放异常。您需要深入研究参数以查看底层异常是什么。输出窗口中可能有线索:通常将存放的异常记录到调试通道。
  • @RaymondChen 我明白了。它给出消息:“WinUI:在当前进程上创建第二个桌面窗口时出错。每个进程不允许超过一个桌面窗口。”。但是,如何将我的窗口更改为其他窗口?
  • 要更改框架中的内容,请导航它。但是您不能创建新的 ScoreWindow。您必须重复使用其他窗口中的框架。

标签: c# winui-3


【解决方案1】:

稍作休息后,我明白我做错了什么。有一种方法可以在页面之间导航。

规则 #1:在 WinUI 中,您只有一个活动窗口,它是 MainWindow。总是。如果你想改变布局,你必须使用框架。

在 MainWindow.xaml 中,您可以这样写:

    <Grid>
        <Frame x:Name="mainFrame"/>
    </Grid>

元素“框架”提供在页面之间导航的能力。

然后切换到 MainWindow.xaml.cs 并且在构造函数中必须是这样的:

        public MainWindow()
        {
            InitializeComponent();
            mainFrame.Navigate(typeof(NameOfYourPage));
        }

它会立即激活您的页面。

然后,如果您想从一个页面导航到另一个页面,请在页面控制中编写以下代码:

Frame.Navigate(typeof(NameOfYourPage), null, new EntranceNavigationTransitionInfo());

第三个参数是动画,但我没注意到变化。

您可以在这里找到更多信息:

Tutorial about navigation

Microsoft documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    相关资源
    最近更新 更多