【问题标题】:How can i change a Page in my wpf Main Window?如何在我的 wpf 主窗口中更改页面?
【发布时间】:2021-12-10 00:23:16
【问题描述】:

我想切换托管在我的主窗口上的页面。第一页(在 App Start 处)正在正确显示。但是,如果我想更改页面,它不会发生。我什至没有收到错误。它只显示第一页!这是我的代码:

MainWindow的构造函数:

public MainWindow(SchraubUser _schraubUser, string page = "")
    {
        schraubUser = _schraubUser;
        db = new AccessDatabase(schraubUser._DATABASE_PATH);

        ViewModel.ViewModel wzViewModel = new ViewModel.ViewModel(schraubUser, db);

        InitializeComponent();

        if (page == "")
        {
            Main.Content = new View.Werkzeug_Window(wzViewModel);
        }
        else
        {
            Main.Content = new View.Freigaben(wzViewModel); 
        }
    }

在应用程序启动时,可选变量是“”,因此主窗口将显示 View.Werkzeug_Window(正常工作)。

这是更改页面的代码:

    private void Button_Freigaben_Click(object sender, RoutedEventArgs e)
    {
        mainWindow = new MainWindow(sb_vm.schraubUser, "Freigabe");
    }

但它仍会显示第一页。这是为什么呢?

主窗口的 XAML:

<Window x:Class="SchrauberDB.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:SchrauberDB"
    mc:Ignorable="d" 
    Title="MainWindow" Height="750" Width="1100"
    WindowState="Maximized">
<Grid x:Name="mainGrid">
    <Frame x:Name="Main" />
</Grid>
</Window>

【问题讨论】:

  • 您不想使用相框吗?也许在 Click 事件处理程序中将 Frame.Content 属性设置为新页面?就像你在大蟒蛇做的那样?这就是为什么它适用于启动时的第一页?

标签: c# wpf user-interface


【解决方案1】:

这太尴尬了……

    private void Button_Freigaben_Click(object sender, RoutedEventArgs e)
    {
        mainWindow = new MainWindow(sb_vm.schraubUser, "Freigabe");
        mainWindow.Show();
    }

【讨论】:

  • 但是这个解决方案只会打开一个新窗口,而旧窗口仍然是可见的......我如何在 mainWindow 保持不变的情况下更改页面而不打开新窗口?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
  • 1970-01-01
  • 2014-02-08
  • 2023-01-12
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
相关资源
最近更新 更多