【问题标题】:Change content of WPF Window更改 WPF 窗口的内容
【发布时间】:2019-10-31 02:23:39
【问题描述】:

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

    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;

    }

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

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

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

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

    this.Content = new ctlFinanz(login);
    

    就是这样:-)

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        对我来说,这听起来像是在页面中使用框架的地方。与其制作很多窗口,不如制作一个带有框架的窗口,然后将内容放入页面中。然后,您只需在每次按下导航按钮时将框架的 .Content 更改为不同的页面。

        【讨论】:

          【解决方案4】:

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

          MainWindow 构造函数:

          this.Content = new UserControlMainContent();
          

          来自UserControlMainContent,当我点击一个按钮时:

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

          【讨论】:

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