如何使用WPF中的按钮导航到另一个页面

问题描述 投票:9回答:6

我有一个名为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.xamlPag1.xaml在同一个文件夹中,所以我看不出哪里出错了?

c# wpf xaml button
6个回答
14
投票

解决我自己的问题:

我觉得有点傻为我自己的问题提供解决方案但是多亏了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));

1
投票

您不需要任何C#代码,只需在XML中执行:

<Button Content="local mode"
    Command="NavigationCommands.GoToPage"
    CommandParameter="/Page2.xaml"/>

(重新格式化的代码未经测试)


1
投票

你应该使用这个,这适用于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是正确的名称。之后,您应该使用其方法在功能上执行此操作。


0
投票

使用任何容器并将内容绑定到viewmodel或codebehind中的任何属性。之后,您只需通过设置新页面并调用PropertyChanged事件来更新属性(请参阅INotifyPropertyChanged接口)。这将更新容器的内容,您可以显示所需的任何内容。


0
投票

如果你想要一个单独的窗口

NavigationWindow navWIN = new NavigationWindow();
navWIN.Content = new pageWFbchAdmin();
navWIN.Show(); 
//winBchAdmin.ShowDialog();

0
投票
private void Navigate_Click(object sender, RoutedEventArgs e)//By Prince Jain 
{
    this.NavigationService.Navigate(new Uri("Page3.xaml", UriKind.Relative));
}
© www.soinside.com 2019 - 2024. All rights reserved.