【问题标题】:How do I switch pages within a WPF application?如何在 WPF 应用程序中切换页面?
【发布时间】:2019-07-17 16:01:02
【问题描述】:

我有一个 WPF 应用程序,但我无法找到切换页面的方法,甚至无法创建多个页面。与本主题相关的所有问题仅显示如何切换,而不是创建 AND 切换。

我已经尝试查找解决方案,但没有显示正确的答案。

【问题讨论】:

  • 我不明白您为什么认为创建如此重要,但无论如何页面通常不是一个好主意。 social.technet.microsoft.com/wiki/contents/articles/…
  • 你能详细说明为什么它们“无论如何都是个坏主意”吗?
  • 您是否考虑过使用 tabcontrol 代替?
  • 由于日志和状态保存机制,帧和页面会产生内存开销。在我的经验中。 “返回”是一种相当常见的网络用户要求,但对桌面应用程序很少有用。框架和页面最适合诸如“向导”工作流之类的场景,其中用户需要遵循一系列步骤并返回一两步是有意义的。 Viewmodel first 很常见。

标签: c# .net wpf visual-studio


【解决方案1】:

试试
this.NavigationService.Navigate(new PageName());

或者
this.NavigationService?.Navigate(new PageName()); //To check if it's not null

编辑:抱歉,我没有正确理解您的问题。
据我所知,您不能只创建并导航到一个页面。为什么不能只创建一个页面,根据需要进行设计,然后进行导航?

Edit2:经过一番研究,我发现您可以创建自己的类并从 Window 类继承它。

 public class MyPage: Window
    {
       this.WindowStyle = WindowStyle.SingleBorderWindow;  
       //Add grid  
       this.RootGrid = new Grid()
       {
           //Add TextBox
           TextBox TextBox_Test = new TextBox()
            { Text = "ABC",
              Background = Brushes.Yellow, 
              HorizontalAlignment = HorizontalAlignment.Center, 
              VerticalAlignment = VerticalAlignment.Top 
            };
            this.RootGrid.Children.Add(TextBox_Test);
       }
    }

您也可以添加行/列。

this.RootGrid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(20) });
this.RootGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width= new GridWidth(20) });

然后您可以按照我所说的导航到MyPage 页面。
希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多