2015-01-14 4 views
0

У меня есть три файла XAML, это mainwindow.xaml,login.xaml,homepage.xaml. Поскольку файлы можно перемещать через фреймы, я добавил рамку в главное окно, которое соответствует всему экрану.Переход к другому файлу XAML

XAML из MainWindow:

<Window x:Class="Myproject.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525" WindowState="Maximized" Initialized="Window_Initialized"> 
    <Grid> 
     <Frame Name="pageFrame"></Frame> 
    </Grid> 
</Window> 

CS файл MainWindow:

private void Window_Initialized(object sender, EventArgs e) 
{ 
    pageFrame.Height = SystemParameters.WorkArea.Height-10; 
    pageFrame.Width = SystemParameters.WorkArea.Width; 
    pageFrame.Navigate(new login()); 
} 

Он переходит полностью на страницу входа и выполнить регистрационные действия там.

Проблема заключается в том, что не перейти к homepage.xaml от login.xaml.cs

Код, используемый для навигации homepage.xaml от login.xaml.cs

MainWindow mw = new MainWindow(); 
mw.pageFrame.Navigate(new homepage()); 

Этот код содержится в разделе инструкции if и i checked с использованием контрольных точек, если эти операторы выполняются. И это does выполнить те и объекты заселены, но naviagtion не происходит.

Что я делаю неправильно? Это неправильный подход?

+0

Выяснил проблему, но не знает обходной путь. Проблема заключается в том, что ** нет ** элементы управления могут быть изменены. –

+0

Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

ответ

1

проблема есть, хорошо, mw есть новый окно и даже не отображается. И вы остаетесь в своем старом экземпляре MainWindow, ничего не происходит с вашим старым MainWindow.

Вам нужно перемещаться из вашего старого MainWindow, а не из нового.

((MainWindow)(Application.Current.MainWindow)).pageFrame.Navigate(new homepage()); 

У вас есть ссылка на главное окно, Application.Current.MainWindow, но вам нужно, чтобы бросить его в свой собственный тип MainWindow первым.

+0

Отличный ответ. –

Смежные вопросы