美文网首页
WPF实现窗口无边框、透明及解决控件随窗口透明问题

WPF实现窗口无边框、透明及解决控件随窗口透明问题

作者: Memoyu | 来源:发表于2019-06-10 17:46 被阅读0次

认知尚浅,如有错误,愿闻其详!

概述

  在实现便签项目时,为了实现美观,需要将Windows窗口样式去除掉,实现无边框、背景透明等样式。如图:

便签样式.png
其中,有一些坑,记录一下,本文涉及依赖属性,如不了解,点这里!

窗口无边框化

前端需要使用到WindowChrome类来自定义窗口风格,需要在XAML中引入shell命名空间,然后进行属性设置:
ResizeBorderThickness:调整窗口大小的边框,不可视边框
CaptionHeight:标题栏高度
CornerRadius:窗口四边圆角度
GlassFrameThickness:窗口边框大小,可视的边框

xmlns:shell="clr-namespace:System.Windows.Shell;assembly=PresentationFramework"

<shell:WindowChrome.WindowChrome>
        <shell:WindowChrome 
            ResizeBorderThickness="2" 
            CaptionHeight="0"
            CornerRadius="0"
            GlassFrameThickness="0"
            />
    </shell:WindowChrome.WindowChrome>

窗口透明

要实现窗口透明度调节,需要给窗口赋值允许透明属性:AllowsTransparency ="True"
否则调节Opacity时背景只会变黑,而不是透明

且赋值上个属性的同时也需要赋值窗口样式为none属性:WindowStyle="None"
否则会抛异常

最后,是设置透明度值,它需要单独的在<Window.Background>下修改SolidColorBrush
中的Opacity的属性值,来改变透明度<SolidColorBrush Opacity="{Binding ElementName=stickyNoteViewProp, Path=backgroundOpacity}" />这样才能够完美的解决透明问题,否则如果在窗口下直接设置Opacity属性的值则会导致窗口中的控件也随之变透明,这并不是我想要的

 <Window.Background>
        <SolidColorBrush Opacity="{Binding ElementName=stickyNoteViewProp, Path=backgroundOpacity}"   Color="{Binding ElementName=stickyNoteViewProp, Path=viewBackground}"></SolidColorBrush>
 </Window.Background>

成果展示

有兴趣的同学可以看一下我的便签项目!

相关文章

网友评论

      本文标题:WPF实现窗口无边框、透明及解决控件随窗口透明问题

      本文链接:https://www.haomeiwen.com/subject/eylaxctx.html