为此特意下载了10586的SDK调试。错误显示,一个样式找不到,名为ListViewItemBackground。因为开发的时候是基于14393的,有可能是14393的SDK中默认有该样式,但10586没有。
首先找到以下目录:
C:\Program Files (x86)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP
可以看到里面有以下三个目录:
这就是三个不同版本的Win10。依次打开里面的Generic目录,里面的generic.xaml就是默认的样式文件。为了比较三个版本不同的区别,使用VS Code的同学可以安装这个插件:
安装完毕后,reload一下,把三个版本的generic.xaml拖进来,在第一个要比较的文件上右键单击选择Mark 1st file,在第二个文件上右键单击选择Mark 2nd file,就可以进行比较了。
首先查找ListViewItemBackground这个值,发现14393里是有这个属性的,但10586没有,找不到这个值就报错了:
可以看到,差异还是比较大的。
至于自定义的AppBar的问题,是因为我从14393的样式里复制出来的模板,是这样的:
而在10586中,AppBar的模板是这样的:
但在14393中,其实跟10586的值是一样的:
也就是说,14393里把一些资源重新起了个名。传说中的微软改名部再次立功了。
再比较一下14393和15063,可以发现也有一些小改动:
所以如果要用到这些样式的时候,一定要确认在不同版本中的默认样式中是存在的,否则就会找不到资源而报错。