Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >为什么同样的WPF控件在不同的电脑上呈现外观不一致

为什么同样的WPF控件在不同的电脑上呈现外观不一致

作者头像
黄腾霄
发布于 2020-06-10 03:08:42
发布于 2020-06-10 03:08:42
1.3K00
代码可运行
举报
文章被收录于专栏:黄腾霄的博客黄腾霄的博客
运行总次数:0
代码可运行

今天有同事跑过来说遇到了一个奇怪的bug,同样的程序在win7和win10上界面相差了2个像素


一开始我们以为是半像素或者是分辨率的问题。

结果调试了很久都没有结果。

不过意外的我们发现了另一个奇妙的东西。

下面两个图分别是在win7和win10情况下soonp获得的可视化树(已用demo替换)

有么有发现TabControl的子元素Grid多出了一个名字templateRoot

在代码里面查找,发现并没有这个名字的Grid,所以可以确定这个是来自TabControl的默认Style

所以我们找到win7和win10 下的默认主题 AeroAero2

查找方法可以参见博客默认的WPF样式在哪里

我们分别放在DotPeek中反编译下,获取theme中对应的样式baml

有没有发现这个名字呀。

当然对于这样子的问题的确不是很好定位,因此我们有两种可行的解决方案

1、尽量在关键界面使用自定义样式,对元素的呈现细节进行控制

2、在App.xaml中指定主题样式。代码如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/PresentationFramework.Luna, Version=3.0.0.0,
 Culture=neutral, PublicKeyToken=31bf3856ad364e35,
 ProcessorArchitecture=MSIL;component/themes/luna.normalcolor.xaml" />
            </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
  </Application.Resources>

参考链接:https://social.msdn.microsoft.com/Forums/en-US/f4b9fdfe-5cd5-4c52-9e38-725d766a77c8/xaml-theme-file-name-for-windows-10?forum=wpf


本文会经常更新,请阅读原文: https://xinyuehtx.github.io/post/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%90%8C%E6%A0%B7%E7%9A%84WPF%E6%8E%A7%E4%BB%B6%E5%9C%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E7%94%B5%E8%84%91%E4%B8%8A%E5%91%88%E7%8E%B0%E5%A4%96%E8%A7%82%E4%B8%8D%E4%B8%80%E8%87%B4.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名黄腾霄(包含链接: https://xinyuehtx.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-07-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
theme主题的原理
你可能没有听说过这个功能,但是如果你像我一样是接触过xp的上个世纪过来的人,就会记得windows的不同主题能够影响元素外观。
黄腾霄
2020/06/10
5380
2018-9-24-请不要依赖于异步代码的调用方catch异常
对于我们熟悉的 async/await 方法,我们知道await可以执行一个异步方法,并且在方法结束后“继续”当前方法之后的代码。 这个对于执行耗时操作,且不阻塞当前线程的情形非常有效,例如
黄腾霄
2020/06/10
3720
2019-12-1-构造PipeAccessRule时请不要使用字符串指定Identity
公司的软件最近迁移到俄语系统上,然后出现了一个奔溃异常,如下图(已经隐去了关键信息)
黄腾霄
2020/06/10
5810
2018-9-2-如何使用远程桌面操控局域网主机
公司的服务器离我好远,每次去跑项目都很辛苦。所以就研究了下windows远程桌面协助。
黄腾霄
2020/06/10
6470
dotnet 读 WPF 源代码笔记 为什么默认的笔迹触摸点的压感是 0.5 的值
在 WPF 中,如 WPF 触摸到事件 博客内容,在 WPF 中将会通过 StylusPointCollection 传入原始的触摸数据,也就是 int[] rawPacketData 来创建触摸点
林德熙
2021/02/02
4150
零基础使用Django2.0.1打造在线教育网站(四):简易留言簿基础开发
努力与运动兼备~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!
啃饼思录
2018/08/21
9550
2019-1-8-看看你的PPT是不是被WPS玩坏了
现在的公司老板都爱省钱,所以强制推行WPS。这可苦了我们这些office二次开发的程序员
黄腾霄
2020/06/10
1K0
2019-11-12-C++CLI的枚举在C#中看不见
实际上在C++/CLI中我们可以定义两种枚举类型,不加class关键字的是标准C++枚举,加class关键字的是托管枚举或者叫做CLR枚举。
黄腾霄
2020/06/10
7200
WPF 漂亮的现代化控件 新 ModernWPF 界面库
这是一个在 GitHub 上完全开源的库,有十分漂亮的界面,整个都是 Win10 风,界面部分和默认 UWP 相近
林德熙
2020/09/15
2.5K0
WPF 漂亮的现代化控件 新 ModernWPF 界面库
WPF 使用 HandyControl 给 ListView 添加漂亮的表头效果
本文将来安利大家一个很好用的 UI 控件库,著名的 HandyControl 库。在想要给 ListView 添加一个表头,同时想要这个 ListView 在没有美工小姐姐的帮助下也能看起来比较好看,此时就特别适合使用 HandyControl 库
林德熙
2020/07/28
3.9K0
WPF 使用 HandyControl 给 ListView 添加漂亮的表头效果
利用qq钓鱼或者定位女友是否回家
前言 随着手机开始普及,现在几乎是人手一部手机,而且qq是必装的app,这正好给了骗子可乘之机,根据你的爱好,给你推送相应的内容,让你防不胜防。 看看下面的聊天 哈哈此时我们看看后台(后台代码看地址定位章节) 哈哈,已经得到女友的ip了,现在查询一下地址在哪里?是不是你老婆不在加班啊!!! 第一章 效果展示 当你在qq群或者好友中发送一条网址,qq会提示一个问号 群友或者朋友肯定会犹豫是否要点击 但是如果你qq群或者好友发送这种消息给你,你肯定会点击
FB客服
2018/02/28
9190
利用qq钓鱼或者定位女友是否回家
默认的WPF样式在哪里
首先查找指定类型所在的程序集(例如Button所在的PresentationFramework),如果程序集定义了ThemeInfo
黄腾霄
2020/06/10
7230
2018-9-25-如何让WPF显示非默认格式的图片
人家都已经用上各种自定义的图片格式了,你还在苦苦守候bmp,jpg,png,只是因为想能在wpf中使用?
黄腾霄
2020/06/10
8350
WPF 给类库设置设计时使用的资源字典
在开发 WPF 类库时,由于类库里面没有存在 App.xaml.cs 文件,而在对单个 XAML 进行开发时,设计器将会因为找不到资源文件的存在,而拿不到资源。本文告诉大家简单的方法,给设计器设置仅在设计时引用的资源
林德熙
2021/04/25
2.2K0
WPF 给类库设置设计时使用的资源字典
2020-1-8-如何正确的在tooltip中实现绑定
小伙伴们肯定都很熟悉xaml的binding,但是对于tooltip或者popup这些跨窗口的binding总是容易遇到这样,或者那样的问题。这里就给大家提供下关于tooltip的binding方法。
黄腾霄
2020/06/10
1.8K0
开源WPF控件库推荐:ModernWpf
站长从博客园 林德熙 处了解到此控件库,通过clone、编译、运行,发现这库确实不错,正如 林德熙 所言:“有十分漂亮的界面,整个都是 Win10 风,界面部分和默认 UWP 相近, 这个库支持了 .NET Framework 4.5 和以上的版本,以及 .NET Core 3.0 和以上的版本,可以在 Windows Vista SP2 和以上的系统运行。” 本人遂从该仓库中将readme搬运过来,希望让更多人知道有这个库的存在,能给WPF开发者多一个UI库选择。
zls365
2020/12/29
4.5K0
开源WPF控件库推荐:ModernWpf
2019-1-2-使用AggregateException的Handle过滤指定异常
在一些并行操作或者任务列表执行的过程中,会需要用到AggregateException进行聚合异常的处理
黄腾霄
2020/06/10
4190
2020-1-7-如何使用mac电脑连接你的windows设备
现在的程序员基本都需要熟悉各个平台的开发了。我的工作设备是windows,我家里平时自己用的是mac。
黄腾霄
2020/06/10
2.4K0
WPF 某个界面或控件在界面找不到看不到可能的原因
本文来告诉大家在 WPF 开发中,发现有某个按钮或某个控件,某个预期的界面,没有在窗口或者没有在界面里面看到或者找到可能的原因和调试的方法
林德熙
2021/12/24
2.1K0
2019-7-24-为啥在Code Behind进行RelativeSource的binding会丢失
不知道是不是有小伙伴遇到过这样的情况。当我们尝试将一个RelativeSource从xaml转到code behind时,原本好好的binding表达式居然出现binding错误。
黄腾霄
2020/06/10
6530
推荐阅读
相关推荐
theme主题的原理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验