我有2页我需要导航mainpage.xaml到login.page xaml,但它会抛出我
你调用的对象是空的.在Root.Children.Clear(); ….
你调用的对象是空的.在Root.Children.Clear(); ….
private void Application_Startup(object sender,StartupEventArgs e) { Grid myGrid = new Grid(); myGrid.Children.Add(new MainPage()); this.RootVisual = myGrid; }
而不是在main.xaml上添加一些代码来导航到LoginUI.xaml
namespace Gen.CallCenter.UI { public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); Grid Root = ((Grid)(this.Parent)); Root.Children.Clear(); Root.Children.Add(new LoginUI()); } } }
我如何将main.xaml导航到LoginUI.xaml?
解决方法
像
AnthonyWJones说你需要使用导航框架.
首先,您需要在您的项目中添加System.Windows.Controls.Navigation的引用,并在其中引用它MainPage.xaml
xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
那么您将需要一个框架,您可以在其中切换不同的XAML页面.这样的事情
<navigation:Frame x:Name="navFrame" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Source=”/Views/First.xaml” />
现在在MainPage.xaml的某个地方,你可以有一个带有标签的按钮
< Button Click =“Button_Click”Tag =“/ Views / Second.xaml”Content =“Second”/>
在Button_Click事件处理程序中,您可以切换navFrame中显示的内容.
private void Button_Click(object sender,RoutedEventArgs e) { Button theButton = sender as Button; string url = theButton.Tag.ToString(); this.navFrame.Navigate(new Uri(url,UriKind.Relative)); }
需要注意的是,通过使用NavigationFramework,浏览器后退按钮和前进按钮功能完美,地址栏中的URL会根据您当前使用的XAML页面进行更新.