Как перейти с одной страницы 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;
}
это работает для меня. :)