AngleSix-Custom Window Chrome and Styles

Custom Window Chrome and Styles

最近有点忙,先把文章记在这里,尽快补充上来
这一节主要实现自定义边框窗口,程序界面整体主题(字体,颜色)等

1.WindowChrome

这是一个无边框简单样式控件,主要是弥补了,默认window窗口样式固定的不足,可扩展性高,
要使用这个WindowChrome,必须要注意几点:

  • WindowStyle=“None”
  • AllowsTransparency=“True”
  • <WindowChrome.WindowChrome> 这个节点需要在window的content之前增加,需要它帮助窗口头部移动
  • 放大缩小需要实现,这里还实现了双击来回放大缩小,这部分建议认真看下,实现方式与平时所见大不一样

2.WindowViewModel

这个实例化时需要传入当前窗口实例对象,这个构造有好有不好,

  • 好的地方时,我们在需要的时候可以访问窗口对象,比如之后有一段是获取密码框密码的,就是这样实现
  • 不好的地方是,这个其实没有做到前后分离,硬生生的把前端对象暴露出来,危险,而且在线程上容易出现错误,个人是不建议这样使用的,使用banding的方式还是好一点

3.WindowResizer

这个部分相信第一次看的朋友基本上有点discomfort,用了较多的win32底层api,不建议刻意的去记忆,这一部分听懂他的代码思路就可以。

  • static extern bool GetCursorPos(out POINT lpPoint);
  • static extern bool GetMonitorInfo(IntPtr hMonitor, MONITORINFO lpmi);
  • static extern IntPtr MonitorFromPoint(POINT pt, MonitorOptions dwFlags);
  • static extern IntPtr MonitorFromWindow(IntPtr hwnd, MonitorOptions dwFlags);
    主要是获取了鼠标位置,窗口位置,移动距离等实现,逻辑是挺清晰的,只是写法会相对的不习惯。

4.ResourceDictionary

这个是加入style样式字典的容器,一定要注意引入的顺序,要把基础的颜色,字体等放在前面,引用其他的需要往后放置

       <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <!-- Order is important-->
                <ResourceDictionary Source="Styles/Colors.xaml"/>
                <ResourceDictionary Source="Styles/Fonts.xaml"/>
                <ResourceDictionary Source="Styles/Buttons.xaml"/>
                <ResourceDictionary Source="Styles/Texts.xaml"/>
                <ResourceDictionary Source="Styles/Windows.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>

5.个人总结

这节重点学习如何写 “Style” 还有 它的对象"TargetType",这个类似前端的css样式一样

       <Style TargetType="{x:Type local:MainWindow}">
            <Setter Property="Template">
                <Setter.Value>
                 </Setter.Value>
            </Setter>
        </Style>

6.视频链接

链接:https://pan.baidu.com/s/1_g-HIA9ze1V3fxIP2VR2Cw
提取码:5yoj

last modified:2018年9月30日16:35:45(1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值