我有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?
答案 0 :(得分:11)
如同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页面进行更新:)
答案 1 :(得分:2)
看起来你已经开始走错了路。使用导航应用程序模板可以满足此类需求。您应该启动一个新项目并选择“Silverlight导航应用程序”。
加载后,运行它以查看基本shell的外观。然后看看MainPage的结构如何并说出Home视图。您需要做的是根据导航Page
类型创建新视图,然后将它们添加到MainPage.xaml。
答案 2 :(得分:2)
解决这个问题的简单方法,你可以看一下这个网站:http://blogs.microsoft.co.il/blogs/eladkatz/archive/2011/01/25/adapting-silverlight-navigation-to-mvvm.aspx。
我之前遇到过这个问题。但在阅读本教程后,我可以轻松地使用MVVM导航到另一个视图。希望这可以帮助你解决所有问题.Thx
答案 3 :(得分:1)
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));
}
}
}
答案 4 :(得分:1)
试试这个:
private void imageEdit1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
newPage mynewPage = new newPage(); //newPage is the name of the newPage.xaml file
this.Content = mynewPage;
}
这对我有用。 :)