日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Win10 UWP开发系列:解决Win10不同版本的Style差异导致的兼容性问题

發布時間:2025/5/22 编程问答 97 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Win10 UWP开发系列:解决Win10不同版本的Style差异导致的兼容性问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在開發一個項目時,遇到了一個奇怪的問題,項目依賴的最低版本是10586,目標版本是14393,開發完畢發布到商店后,很多用戶報無法正常加載頁面。經查,有問題的都是Win10 10586版本。

?

我上篇博客中寫到的自定義的AppBar控件,也存在這個問題,10586會報錯。

?

為此特意下載了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,可以發現也有一些小改動:

所以如果要用到這些樣式的時候,一定要確認在不同版本中的默認樣式中是存在的,否則就會找不到資源而報錯。

?

那如何解決這個問題?一種方案使,將14393的默認樣式中10586里不存在的那部分復制到項目中。但是如果使用了自定義控件,仍然有可能會發現莫名其妙的錯誤,比如有些控件的模板使用了只有14393才支持的屬性,可以參考這幾個文章:

http://stackoverflow.com/questions/40397909/templatebinding-used-after-must-be-a-markup-extension-error-on-uwp-gridvi

https://social.msdn.microsoft.com/Forums/windowsapps/en-US/af308462-59b3-4ec6-9640-f0a3c5956004/uwptemplatebinding-used-after-must-be-a-markup-extension-error-on-uwp-gridview?forum=wpdevelop

所以保險起見,項目最低版本改成14393就行了。需要注意的是,15063的樣式仍然有改動,如果自定義了模板的話還需要考慮兼容性。

?

總結

以上是生活随笔為你收集整理的Win10 UWP开发系列:解决Win10不同版本的Style差异导致的兼容性问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。