silverlight – 如何导航一个xaml页面到另一个?

我有2页我需要导航mainpage.xaml到login.page xaml,但它会抛出我
你调用的对象是空的.在Root.Children.Clear(); ….

我将这段代码添加到App.xaml中:

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页面进行更新.

相关文章

如何在Silverlight4(XAML)中绑定IsEnabled属性?我试过简单的...
我正在编写我的第一个vb.net应用程序(但我也会在这里标记c#,...
ProcessFile()是在UIThread上运行还是在单独的线程上运行.如...
我从同行那里听说,对sharepoint的了解对职业生涯有益.我们不...
我正在尝试保存一个类我的类对象的集合.我收到一个错误说明:...
我需要根据Silverlight中的某些配置值设置给定控件的Style.我...