WPF:如何实现通用窗口?

发布于 2024-10-17 00:38:10 字数 382 浏览 0 评论 0原文

我希望在我的桌面应用程序中有一个可重用的窗口,该窗口可能会“注入”不同的 xaml。因为我希望所有窗口具有相同的外观(我有一个漂亮的标题栏和关闭按钮等)

例如,我希望在其中使用一个消息框(确定/取消/字符串)。我希望它用于托管表单等。

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

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

我只是在寻找一些关于完成我想做的事情的最佳方式的反馈。谢谢

I'd like to have a reusable window in my desktop application that could potentially have different xamls "injected" into it. Because I'd like all my windows to have the same look (I have a nifty title bar and close button, etc)

For example, I'd like to have a messagebox (ok/cancel/string) used in it. I'd like it to be used to host a form, etc.

I currently have:
MyWindow.xaml/cs (is a Window)
MyMessageBox.xaml/cs (is a User Control)
MyForm.xaml/cs (is a User Control)

So what is the best way to implement this. Do I just put a ContentPresenter in MyWindow and then somehow "inject" the other xamls into it? Do I need the other controls to inherit something from the base window?

I'm just looking for some feedback on the best way to go about what I'm trying to do. Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

找个人就嫁了吧 2024-10-24 00:38:11

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

A simple approach would be a Window with a Frame, and then load pages into that Frame on demand.

濫情▎り 2024-10-24 00:38:11

我同意Henk Holterman的回答。我刚刚为此类 WPF 应用程序编写了一个小型“框架”。我在“内容”页面上使用界面来定义代码隐藏的通用功能;我有一个通用页面模板,用于为我提供标题块、关闭按钮等。

除非您绝对需要它,否则我会避免使用 WPF 进行视觉继承 - 正确执行可能相当困难。

I agree with with Henk Holterman's answer. I've just written a small 'framework' for WPF applications of this sort. I use an inteface on the 'content' pages to define common functionality for the code-behind; I have a generic page template that I use to give me a caption block, close button, etc.

I'd avoid visual inheritance with WPF unless you absolutely need it - it can be rather tricky to get right.

怀念你的温柔 2024-10-24 00:38:11

您应该认真考虑使用 Prism (由 Microsoft 开发,来自 模式与实践组);它的构建正是为了处理这些场景,为 组合 UI

You should seriously consider using Prism (developed by Microsoft, coming out of the Patterns & Practices group) for this; it was built to handle exactly these scenarios, providing tools for composing UIs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文