【问题标题】:How can I remove the border of a WPF window when using luna or classic?使用 luna 或经典时如何删除 WPF 窗口的边框?
【发布时间】:2010-11-14 19:08:53
【问题描述】:

当我使用 WindowStyle="None" 显示 WPF 窗口时,使用 areo 时看起来很棒。

但是,当我使用 luna 或 classic 时,它会显示大约 5 像素宽的丑陋灰色边框。

当然,如果我设置ResizeMode="NoResize",这个边框就会消失,但我希望窗口可以调整大小(ResizeMode="CanResize")。

其他非 WPF 应用程序(live mail,即 firefox 等)不显示此灰色边框,但仍可调整大小。

有没有办法在仍可调整大小的同时移除此边框?

【问题讨论】:

    标签: c# .net wpf windows


    【解决方案1】:

    我正在使用 WPF 可自定义窗口的基本窗口。这是我的窗口声明(缩写):

        <CustomWindow:EssentialWindow 
          xmlns:aero="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"
          xmlns:CustomWindow="clr-namespace:CustomWindow;assembly=CustomWindow"
          AllowsTransparency="True" Background="Transparent" 
          ResizeMode="CanResizeWithGrip"
          WindowStyle="None"
          ShowInTaskbar="True" >
    

    【讨论】:

    • 这看起来是一个很酷的项目。我以前从未听说过。
    • 这个项目很酷,但是有一些问题,比如最大化时窗口覆盖任务栏。改用Microsoft WPF Shell 集成库archive.msdn.microsoft.com/WPFShell
    • 使用 3rd 方库永远不是解决方案。
    【解决方案2】:

    尝试在 Window 上将 AllowsTransparency 设置为 True。

    【讨论】:

    • 这是给小费的。这不是答案,因为 AllowTransparency=true 会禁用调整大小。
    • 是的,您无法从窗口边缘调整大小,但您仍然可以使用夹点调整大小。您可以自己处理从 wnidow 边缘调整大小,如果您有兴趣我可以发布代码。
    • @JohnMyczek 能否发布 AllowsTransparency 设置为 True 时调整窗口大小的代码?
    【解决方案3】:

    我找到了更好的答案。无需乱用 ResizeMode。无需互操作调用。无需设置会产生副作用的 AllowsTransparency。

    <WindowChrome.WindowChrome>
     <WindowChrome CaptionHeight="0" ResizeBorderThickness="5" />
    </WindowChrome.WindowChrome>
    

    我从这个帖子中得到了这个答案:How to create a WPF Window without a border that can be resized via a grip only?

    我在这里为那些登陆这里搜索谷歌的人重新发布它。

    【讨论】:

    • 最佳答案!支持 winformshost
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多