【问题标题】:Creating custom forms in WPF?在 WPF 中创建自定义表单?
【发布时间】:2009-09-24 04:09:37
【问题描述】:

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

我知道我可以轻松地将 Window 类型更改为没有边界并从那里开始,但这似乎很像 WinForms。只创建一个派生自Window 的类并为其设置样式不是更好吗?如果是这样,我该怎么做?谢谢!

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    这是一篇关于使用 WPF 自定义窗口“chrome”的精彩文章:

    Custom Window Chrome in WPF

    它附带一个代码库项目,您可以从中下载代码:

    WPF Chrome

    【讨论】:

      【解决方案2】:

      要显示非标准边框,您必须在窗口中设置 AllowsTransparency=True 和无边框。你是否想在课堂上这样做取决于你。您基本上必须意识到 WPF 实际上只是托管在标准窗口中的 DirectX 应用程序。因此,如果您想要非标准的 Windows 行为,则必须删除标准窗口边框并根据您要处理的标准窗口事件开始重新连接它。拖动、最小化/最大化/恢复、标题栏。

      真的,你不应该花费超过 30 分钟到一个小时来想出接近你想要的东西,而且你当然可以将你的自定义窗口放在一个基类中,以便在以后重复使用。

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

      【讨论】:

      • 如果您重新发明标准窗口标题栏,请注意可访问性等。任何可访问性工具如何知道如何关闭窗口等?但是,您可能不关心您的应用程序。
      【解决方案3】:

      有一个名为“Blendables”的产品,它在其"Essentials Mix" 捆绑包中包含一个 ChromelessWindow 控件,这使得这很容易做到。我自己从未真正使用过它,我只知道它存在并认为它可能有用。至少它表明您可以按照您的要求创建可重用、可模板化的 chrome。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-17
        • 1970-01-01
        • 2012-05-25
        相关资源
        最近更新 更多