How can i navigate one xaml page to another?

2019-04-06 03:03发布

i have 2 page i need to navigate mainpage.xaml to login.page xaml but it throws me Object reference not set to an instance of an object. in Root.Children.Clear();....

i added this codes in App.xaml:

   private void Application_Startup(object sender, StartupEventArgs e)
        {
            Grid myGrid = new Grid();
            myGrid.Children.Add(new MainPage());
            this.RootVisual = myGrid;
       }

and than i adde some codes on main.xaml to navigate to 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());
        }
    }
}

How can i navigate main.xaml to LoginUI.xaml ?

6条回答
闹够了就滚
2楼-- · 2019-04-06 03:36

Try this:

private void imageEdit1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    newPage mynewPage = new newPage(); //newPage is the name of the newPage.xaml file
    this.Content = mynewPage;
}

It's working for me. :)

查看更多
混吃等死
3楼-- · 2019-04-06 03:48

Like AnthonyWJones said you need to use the navigation framework.

First you'll need to add a reference to System.Windows.Controls.Navigation in your project and refernce it in you MainPage.xaml

xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"

Then you'll need a frame within where you'll switch different XAML pages. Something like this:

<navigation:Frame x:Name="navFrame" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Source=”/Views/First.xaml” />

Now somewhere in MainPage.xaml you could have a Button with a tag

<Button Click="Button_Click" Tag="/Views/Second.xaml" Content="Second" />

and in the Button_Click eventhandler you could switch out the content showed in 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));
}

A cool thing to note is that by using NavigationFramework the browser back and forward buttons work perfectly and the URL in the addressbar updates depending on the XAML page you are currently on :)

查看更多
仙女界的扛把子
4楼-- · 2019-04-06 03:50

The simple one to solve this problem, you can look at this website : http://blogs.microsoft.co.il/blogs/eladkatz/archive/2011/01/25/adapting-silverlight-navigation-to-mvvm.aspx .

I had this problem to earlier. But after I read this tutorial, I can easily navigating to another view with MVVM. Hope this can help you all solve the problem.Thx

查看更多
小情绪 Triste *
5楼-- · 2019-04-06 03:50
private void formcombobox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    foreach (ComboBoxItem child in formcombobox.Items)
    {
        if (child.Name != null && child.IsSelected == true)
        {

            string url = new System.Uri("/DWRWefForm;component/Pages/"
                            + child.Name + ".xaml", System.UriKind.Relative).ToString();
            this.navframe.Navigate(new Uri(url, UriKind.Relative)); 
        }

    }
}
查看更多
再贱就再见
6楼-- · 2019-04-06 03:55

Let's suppose you are viewing the MainPage.xaml then you want to open another xaml page called newPage.xaml by clicking on a Button or an ImageEdit in the MainPage.xaml, here's the quick solution that you should write inside the MainPage.xaml.cs:

private void imageEdit1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    newPage mynewPage = new newPage(); //newPage is the name of the newPage.xaml file
    this.Content = mynewPage;
}

This is working with me.

查看更多
倾城 Initia
7楼-- · 2019-04-06 03:56

Looks like you've started off on the wrong foot. This sort of thing is catered for using the Navigation application template. You should start a new project and select "Silverlight Navigation Application".

Once loaded just run it to see what the basic shell looks like. Then take a look at how MainPage is structured and say the Home view. What you will need to do is create new views based on the navigation Page type and then add them to MainPage.xaml.

查看更多
登录 后发表回答