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

本文探讨了同一WPF程序在Windows 7和10上界面显示不一致的问题,深入分析了默认主题和可视化树的差异。通过对比Win7和Win10的默认主题样式,揭示了额外子元素的来源。提出了解决方案:1) 使用自定义样式控制元素呈现;2) 在App.xaml中指定主题样式。文章提供了相关资源链接和许可协议信息。
摘要由CSDN通过智能技术生成

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


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

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

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gkeAgAeq-1579392672919)(../media/IMG_20180725_154250.jpg)]

在这里插入图片描述

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

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

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

查找方法可以参见博客默认的WPF样式在哪里_c#,wpf,xaml_黄腾霄的博客-CSDN博客

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值