windows WinUI3 navigation“对象引用未设置为对象的示例,”

gmol1639  于 2023-06-07  发布在  Windows
关注(0)|答案(2)|浏览(159)

我对WinUI 3非常陌生(我几乎不知道如何让一个按钮做一些事情!)和导航真的让我很困惑。我已经直接从WinUI 3库中获得了代码,但我不能让导航工作。当我调用Button_Click函数时,显示错误“Object reference not set to an instance of an object.”。下面是MainWindow.xaml:

<Window
    x:Class="safesign_win.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:safesign_win"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Frame x:Name="MainFrame">
        <StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
            <Frame x:Name="TheNavFrame" />
            <Button Click="Button_Click">Next</Button>
        </StackPanel>
    </Frame>

</Window>

下面是MainWindow.xaml.cs:

namespace testapp {
    /// <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();
        }



        private void Button_Click(object sender, RoutedEventArgs e) {
            MainFrame.Navigate(typeof(BlankWindow1), null, new SlideNavigationTransitionInfo() { Effect = SlideNavigationTransitionEffect.FromRight }); //error occuring here
        }
    }
}

我正在尝试导航到文件名为BlankWindow 1的新页面。这是默认名称,但坦率地说,我只是想让这个工作。文件名的事以后再说。
我尝试重新定位框架,添加一个if语句(如果MainFrame!= null)。记录MainFrame的值确实提供了一个帧。

ds97pgxw

ds97pgxw1#

Frame导航与Page s一起工作,而不是Window s。(docs)
因此,您需要创建一个Page,假设 TestPage,并像这样调用Navigate方法:

MainFrame.Navigate(typeof(TestPage), null);
x8diyxa7

x8diyxa72#

创建一个新的WPF窗口或用户控件,名为“BlankWindow1”,您要导航到。确保它有自己的XAML文件和关联的代码隐藏文件。
Button_Click事件处理程序中,可以使用MainFrame框架控件的Navigate方法导航到所需页面。下面是一个例子:

private void Button_Click(object sender, RoutedEventArgs e){
         MainFrame.Navigate(new Uri("BlankWindow1.xaml",UriKind.RelativeOrAbsolute));
}

此代码段假定“BlankWindow1”的XAML文件位于同一项目和文件夹中。如果它位于不同的文件夹中,则可能需要相应地调整URI。

相关问题