我有一个名为Page2.xaml
的第二个.xaml页面,我想这样做,以便当我点击我的按钮时,用户被带到Page2.xaml
我在我的Page1.xaml
里面有我的按钮:
<Grid>
<Button x:Name="localModeBtn"
Style="{StaticResource MainButtonStyle}"
Content="local mode"
Click="localModeBtn_Click" />
</Grid>
对于按钮事件处理程序:
private void localModeBtn_Click(object sender, RoutedEventArgs e)
{
Uri uri = new Uri("Page2.xaml", UriKind.Relative);
this.NavigationService.Navigate(uri);
}
单击按钮后,我收到一条错误,上面写着“找不到资源page2.xaml
”问题是Page2.xaml
和Pag1.xaml
在同一个文件夹中,所以我看不出哪里出错了?
解决我自己的问题:
我觉得有点傻为我自己的问题提供解决方案但是多亏了Jasti的link我能够对我的代码进行排序。因为他只发表评论,我不能将其标记为答案,所以这是解决方案。
我将NavigationWindow更改为Window并插入:
<DockPanel>
<Frame x:Name="_NavigationFrame" NavigationUIVisibility="Hidden" />
</DockPanel>
在MainWindow.xaml.cs的构造函数中,我添加了:
_NavigationFrame.Navigate(new Page1());
然后最后一步是将按钮事件处理程序调整为:
this.NavigationService.Navigate(new Uri("Pages/Page2.xaml", UriKind.Relative));
您不需要任何C#代码,只需在XML中执行:
<Button Content="local mode"
Command="NavigationCommands.GoToPage"
CommandParameter="/Page2.xaml"/>
(重新格式化的代码未经测试)
你应该使用这个,这适用于me:
var Page2= new Page2(); //create your new form.
Page2.Show(); //show the new form.
this.Close(); //only if you want to close the current form.
在您的解决方案中有一个页面的variable type
,其中page.xaml是正确的名称。之后,您应该使用其方法在功能上执行此操作。
使用任何容器并将内容绑定到viewmodel或codebehind中的任何属性。之后,您只需通过设置新页面并调用PropertyChanged事件来更新属性(请参阅INotifyPropertyChanged接口)。这将更新容器的内容,您可以显示所需的任何内容。
如果你想要一个单独的窗口
NavigationWindow navWIN = new NavigationWindow();
navWIN.Content = new pageWFbchAdmin();
navWIN.Show();
//winBchAdmin.ShowDialog();
private void Navigate_Click(object sender, RoutedEventArgs e)//By Prince Jain
{
this.NavigationService.Navigate(new Uri("Page3.xaml", UriKind.Relative));
}