WPF:如何实现通用窗口?

时间:2011-02-10 18:50:17

标签: c# wpf xaml user-controls

我希望在我的桌面应用程序中有一个可重复使用的窗口,它可能会有不同的“xamls”注入其中。因为我希望我的所有窗户看起来都一样(我有一个漂亮的标题栏和关闭按钮等)

例如,我想在其中使用消息框(ok / cancel / string)。我希望它可以用来托管表格等。

我目前有:
MyWindow.xaml / cs(是一个窗口)
MyMessageBox.xaml / cs(是用户控件)
MyForm.xaml / cs(是用户控件)

那么实现这个的最佳方法是什么。我只是将一个ContentPresenter放入MyWindow然后以某种方式“注入”其他xamls吗?我是否需要其他控件才能从基本窗口继承内容?

我只是想找到关于我正在尝试做的最佳方式的一些反馈。感谢

6 个答案:

答案 0 :(得分:2)

一种简单的方法是带框架的窗口,然后根据需要将页面加载到该框架中。

答案 1 :(得分:1)

我同意Henk Holterman's answer。我刚刚为这种WPF应用程序编写了一个小“框架”。我在“内容”页面上使用了一个界面来定义代码隐藏的常用功能;我有一个通用的页面模板,我用它来给我一个标题块,关闭按钮等。

除非你绝对需要,否则我会避免使用WPF进行可视化继承 - 要想做到这一点可能会相当棘手。

答案 2 :(得分:0)

Catel的DataWindow就是这样做的。你可以在这里找到源代码:

DataWindow.cs

答案 3 :(得分:0)

您应该认真考虑使用Prism(由Microsoft开发,来自Patterns & Practices组);它的构建是为了处理这些场景,为composing UIs提供工具。

答案 4 :(得分:0)

我最终从这篇文章中得到了一些提示和技巧:

http://www.codeproject.com/KB/WPF/CustomFrames.aspx

这正是我想要的!

答案 5 :(得分:0)