Как перейти с одной страницы xaml на другую?

у меня есть 2 страницы, мне нужно перейти на главную страницу.xaml для входа в систему.страница xaml, но она бросает меня ссылка на объект не указывает на экземпляр объекта. в корень.Дети.Четкий.;)(...

я добавил Эти коды в приложение.язык 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 ?

6 ответов


как AnthonyWJones сказал, что вам нужно использовать навигационную структуру.

сначала вам нужно добавить ссылку на System.Windows.Controls.Navigation в вашем проекте и refernce его в Вас MainPage.в XAML

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

тогда вам понадобится фрейм, в котором вы будете переключать разные страницы XAML. Что-то вроде этого:--10-->

<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 EventHandler в вы поменяли контент, показал в 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, на которой вы находитесь в настоящее время:)


предположим, вы просматриваете MainPage.xaml затем вы хотите открыть другую страницу xaml с именем newPage.xaml нажав на Button или ImageEdit на MainPage.xaml, вот быстрое решение, которое вы должны написать внутри 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;
}

это работает со мной.


похоже, вы начали не с той ноги. Такого рода вещи обслуживаются с помощью шаблона навигационного приложения. Вы должны запустить новый проект и выбрать "Silverlight Navigation Application".

после загрузки просто запустите его, чтобы увидеть, как выглядит базовая оболочка. Затем взгляните на то, как MainPage структурирован и скажите домашний вид. Что вам нужно будет сделать, это создать новые представления на основе навигации Page введите и добавьте их в Файл MainPage.код XAML.


простой, чтобы решить эту проблему, вы можете посмотреть на этом веб-сайте: http://blogs.microsoft.co.il/blogs/eladkatz/archive/2011/01/25/adapting-silverlight-navigation-to-mvvm.aspx .

У меня была эта проблема раньше. Но после того, как я прочитал этот учебник, я могу легко перейти к другому представлению с MVVM. Надеюсь, это поможет вам решить проблему.Thx


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)); 
        }

    }
}

попробуйте это:

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

это работает для меня. :)