我对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的值确实提供了一个帧。
2条答案
按热度按时间ds97pgxw1#
Frame
导航与Page
s一起工作,而不是Window
s。(docs)因此,您需要创建一个
Page
,假设 TestPage,并像这样调用Navigate
方法:x8diyxa72#
创建一个新的WPF窗口或用户控件,名为“BlankWindow1”,您要导航到。确保它有自己的XAML文件和关联的代码隐藏文件。
在Button_Click事件处理程序中,可以使用MainFrame框架控件的Navigate方法导航到所需页面。下面是一个例子:
此代码段假定“BlankWindow1”的XAML文件位于同一项目和文件夹中。如果它位于不同的文件夹中,则可能需要相应地调整URI。