更改WPF窗口的内容

6
当我在我的导航栏上点击一个按钮时,会打开一个新窗口。例如:
    private void btFinanzen_Click(object sender, RoutedEventArgs e)
    {
        Finanz mw = new Finanz(login);
        mw.Show();

    }

现在,我不想在新窗口中显示它。相反,我希望它在同一个窗口中显示。我尝试了以下方法:
    private void btFinanzen_Click(object sender, RoutedEventArgs e)
    {
        Finanz mw = new Finanz(login);
        //mw.Show();
        this.Content = Finanz f;

    }

但是它失败了。 我应该说的是,我现在有很多不同的窗口,并且希望它们都显示在一个窗口中 - 每个窗口通过单击不同的按钮来显示。 我该如何处理?

4个回答

7
您需要做的是使用UserControl而不是Window来替换您的内容。为了在this.Content中展示每个可能的内容,向您的项目添加一个新的UserControl。将先前在第二个窗口中拥有的内容添加到相应的UserControl中。之后,您可以在代码中实例化新的控件并将其分配给主窗口的内容区域。
例如,您创建了一个名为ctlFinanz的UserControl,其中包含先前Finanz窗口中的内容。现在您只需编写:
this.Content = new ctlFinanz(login);

这就是全部了 :-)


1

我曾经遇到过同样的问题,于是决定为每个窗口创建一个单独的用户控件,将它们放在我的WPF中,并将除了当前活动窗口之外的所有窗口的可见性设置为Collapsed。


0
在我看来,这似乎是使用带有页面的框架的地方。不要制作很多窗口,而是制作一个带有框架的窗口,然后将内容放入页面中。然后,每次按导航按钮时,您只需要更改框架的 .Content 为不同的页面即可。

0
创建一个主内容,其中包含我在窗口构造函数中设置的。然后根据您的需求,使用其他更改内容。
MainWindow构造函数:
this.Content = new UserControlMainContent();

UserControlMainContent中,当我点击一个按钮时,例如:

Window window = Window.GetWindow(this); // Get the main window
window.Content = new OtherUserControlContent();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接