在WPF中创建自定义表单?

问题描述:

我目前在学习WPF。到目前为止,我真的很喜欢它。我很喜欢制作精美的应用程序是多么容易,并且希望创建一个具有自定义窗口边框的应用程序。我想它看起来是这样的:在WPF中创建自定义表单?

我知道我可能只是很容易地改变窗式到没有边界,并从那里,但似乎很像的WinForms。创建一个衍生自Window的类并且设计它会不会更好?如果是这样,我该怎么做?谢谢!

这里有一个自定义窗口“铬”与WPF一个伟大的文章:

Custom Window Chrome in WPF

它是伴随着一个代码库项目,从中可以下载代码:

WPF Chrome

要显示非标准边框,您必须设置AllowsTransparency = True,并且窗口中没有边框。无论你想在课堂上做到这一点,取决于你。你基本上必须认识到WPF实际上只是一个标准窗口中托管的DirectX应用程序。所以如果你想要非标准的Windows行为,你必须放弃标准的窗口边界,并根据你想要处理的标准窗口事件开始重新布线。拖动,最小化/最大化/恢复,标题栏。

真的,它不应该花费你超过30分钟到一小时的时间才能提出接近你想要的东西,你当然可以把你的自定义窗口放在基类中,以便在路上重新使用。

我有一种感觉,对于大多数情况下,这将是比尝试覆盖默认Windows绘图更好,更快的选择。

+0

如果重新发明标准窗口标题栏,请小心无障碍等。任何辅助工具如何知道如何关闭窗口等?但是,您可能不在乎您的申请。 – 2009-10-12 11:51:57

有一种名为“Blendables”的产品,其"Essentials Mix"包中包含一个ChromelessWindow控件,这使得它非常容易实现。我从来没有真正使用它,我只是知道它存在,并认为它可能是有用的。至少它表明你可以按照你的要求创建可重用的模板化的Chrome。