8

我正在为商店开发 WPF 应用程序。

所以我有一个MainWindow,其余的都是Child。

哪个是用作子窗口的最佳选择。

  1. 窗户
  2. 用户控制

窗口将是正常的,它将位于 MainWindow 的顶部,如果它的 UserControl 它将位于 MainWindow 的 Canvas 中。

所以任何人都可以建议我在这两个中最好使用哪个。

4

6 回答 6

9

我建议为您的子窗口使用 UserControls。这使您可以在主窗口上设置所有“父”控件,并且子窗口不会覆盖它们。

作为进一步的建议,我建议研究 Caliburn Micro。这是处理 WPF 窗口和用户控件的一个很好的框架。

要将子 UserControl 添加到父窗口,我通常只需将 ContentControl 添加到我的主窗体,如下所示:

<ContentControl x:Name="ViewWindow" Margin="10" />

只需将您的孩子分配给该控件,您就可以了。

于 2012-04-27T20:49:04.867 回答
4

我建议使用像 AvalonDock 这样的 MDI 框架:http://avalondock.codeplex.com/ 会节省很多时间。

于 2012-04-27T21:33:12.253 回答
2

就像生活和编码中的许多事情一样:这取决于:)

  • 窗户

    • 当新窗口有自己的状态和行为时
    • 当主窗口和弹出窗口之间几乎没有交互/消息传递时
  • 用户控制

    • 当底层主窗口的状态对弹窗的操作至关重要时
    • 当需要在 2 个窗口之间传递状态更改时

这些是我想到的一些设计决策……

于 2012-04-27T20:49:41.927 回答
2

请参考网站:http ://wpfmdi.codeplex.com/

于 2012-04-28T07:35:21.857 回答
1

当您决定使用父子窗口交互时,子窗口将非常适合桌面应用程序,尽管我个人建议您在主窗口中使用框架并使用它来承载多个页面。

要了解有关 WPF 和 silverlight 中导航的更多信息,您可以访问此链接

使用这种方法将帮助您获得以下优势:

  1. 由于未附加的事件处理程序,内存泄漏的可能性较小。
  2. 由于您可以将页面背景设置为透明,因此无需指示子窗口的样式即可实现一致的设计。
  3. 当其他程序与您正在构建的软件同时使用时,用户不会很难找到焦点所在的窗口。

我还认为在构建这个软件时你还可以考虑很多东西,但最终你仍然是应该决定这个问题的人。

这只是我的建议,希望对您有所帮助:)。

于 2012-04-28T04:08:30.613 回答
1

考虑检查MDIContainer与WPF 的 MDI类似的项目,但它为您提供更多自由,因为它不会强制您实现 MDIChild 窗口、界面或任何东西。

于 2013-10-28T13:33:43.327 回答