如何在我的 wpf 主窗口中更改页面?
Posted
技术标签:
【中文标题】如何在我的 wpf 主窗口中更改页面?【英文标题】:How can i change a Page in my wpf Main Window? 【发布时间】: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 属性设置为新页面?就像你在大蟒蛇做的那样?这就是为什么它适用于启动时的第一页? 【参考方案1】:这太尴尬了……
private void Button_Freigaben_Click(object sender, RoutedEventArgs e)
mainWindow = new MainWindow(sb_vm.schraubUser, "Freigabe");
mainWindow.Show();
【讨论】:
但是这个解决方案只会打开一个新窗口,而旧窗口仍然是可见的......我如何在 mainWindow 保持不变的情况下更改页面而不打开新窗口?以上是关于如何在我的 wpf 主窗口中更改页面?的主要内容,如果未能解决你的问题,请参考以下文章