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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows Phone 资源管理与换肤思考

發布時間:2023/12/20 windows 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows Phone 资源管理与换肤思考 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Windows Phone 資源管理與換膚思考

原文 Windows Phone 資源管理與換膚思考

新入手一臺Windows 8的筆記本,安裝了VS2013后,終于又可以開發WP了。公司暫時不愿意開發WP,那么咱就自行研究吧!

?

在沒有WP開發環境的時候,曾經在WPF嘗試了一下換膚功能的實現。最簡單的是在后臺修改需要更換樣式的控件的Style,然而這樣做工作量很大而且可拓展性也很差??偛豢赡芴砑右环N主題皮膚,就在每個頁面寫一次Style的加載吧,工作量太大又容易出錯。

?

于是在MSDN上仔細閱讀了相關文檔,發現了DynamicResource拓展關鍵字。MSDN描述為“為任何 XAML 屬性特性提供值,該值將推遲為對已定義的資源的引用。 該資源的查找行為與運行時查找類似?!笔裁匆馑寄?#xff0c;就是運行時才加載改資源,并且鍵值對應的資源修改時會同時更新UI控件的顯示。這不是正是我們要找的么!

于是用WPF做了的Demo,Demo里面有兩套模板,兩套模板都定義了一套相同鍵值的資源樣式(Style)。而頁面使用DynamicResource綁定對應資源。切換兩套模板,實現皮膚更換。

blackStyle.xaml模板

<Style x:Key="bgGrid" TargetType="Grid"><Setter Property="Background"><Setter.Value><ImageBrush ImageSource="/Img/bgBlack.jpg" Stretch="Fill"/></Setter.Value></Setter></Style>

WhiteStyle.xaml模板

<Style x:Key="bgGrid" TargetType="Grid"><Setter Property="Background"><Setter.Value><ImageBrush ImageSource="/Img/bgLight.jpg" Stretch="Fill"/></Setter.Value></Setter></Style>


切換應用加載的資源實現換膚

if (Application.Current.Resources.MergedDictionaries[1].Source.OriginalString.Equals("/Common/BlackStyle.xaml")){Application.Current.Resources.MergedDictionaries[1].Clear();Application.Current.Resources.MergedDictionaries[1].Source = new Uri("/Common/WhiteStyle.xaml", UriKind.Relative);}else{Application.Current.Resources.MergedDictionaries[1].Clear();Application.Current.Resources.MergedDictionaries[1].Source = new Uri("/Common/BlackStyle.xaml", UriKind.Relative);}

如此,確實能實時更換皮膚。然而當我配置好Windows Phone的開發環境時,卻發現這樣的方式在WPF行得通,而Windows Phone 上面卻行不通。且不說WP上沒有實現DynamicResource關鍵字,在執行Application.Current.Resources.MergedDictionaries[1].Source = new Uri("/Common/BlackStyle.xaml", UriKind.Relative);這一句的時候更是提示了調用了Com組件的錯誤。好吧,WP的內核是和WPF不同,所以不能這樣實現。但是動態資源DynamicResource確實是實現Xaml換膚的最好方式。

?

那么還有什么方法可以實現動態更換皮膚,并且可拓展性和可維護性又好呢?經過一番思考之后,覺得附加屬性能夠實現這樣的功能。附加一個StyleName屬性,并且屬性根據應用的設置查詢出相應的Style加載到控件上。如何實現應用主題切換通知頁面重新加載樣式這個關鍵點,還在思索當中,后續有結果會再發表博文。同時希望有好想法的能留個思路。

?

設想:

<Grid cm:StyleAttach.StyleName="bgGrid" cm:StyleAttach.Theme="{Binding Theme}"> </Grid>

通過綁定主題和資源名稱來獲取資源,同時通過Theme附加屬性的修改,保證主題更改時實時更新皮膚。

posted on 2013-12-27 20:56 NET未來之路 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/lonelyxmas/p/3494769.html

總結

以上是生活随笔為你收集整理的Windows Phone 资源管理与换肤思考的全部內容,希望文章能夠幫你解決所遇到的問題。

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