更改WPF窗口的内容

时间:2012-03-23 14:56:33

标签: c# wpf

当我点击导航栏上的按钮时,会打开一个新窗口。例如:

    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 个答案:

答案 0 :(得分:6)

您需要做的是为您的可替换内容使用UserControl而不是Window。为要在此项目中显示的每个可能内容添加一个新的UserControl。将先前在第二个窗口中的内容添加到相应的UserControl。之后,您只需在代码中实例化新控件并将其分配给主窗口的内容区域。

例如,您使用以前的Finanz窗口的内容创建UserControl ctlFinanz。现在你只需写:

this.Content = new ctlFinanz(login);

全部: - )

答案 1 :(得分:1)

我遇到了同样的问题,决定为每个窗口创建一个单独的usercontrol,将它们放在我的wpf中,并将除活动窗口之外的所有窗口的可见性设置为Collapsed。

答案 2 :(得分:0)

对我而言,这听起来像使用带有页面的框架的地方。不要制作大量的窗口,而是制作一个带框架的窗口,然后将内容放入页面中。然后,您需要做的就是每次按导航按钮时将框架的.Content更改为其他页面。

答案 3 :(得分:0)

使用我在窗口构造函数中设置的UserControl创建主要内容。然后根据您的需要,与其他UserControl一起更改内容。

MainWindow构造函数:

this.Content = new UserControlMainContent();

UserControlMainContent中,当我通过示例单击按钮时:

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