WPF 最简方法使用自己定制的 WPF 框架
本文提供了一個最簡的方法,可以用到整個 WPF 框架里面所有 internal 內部權限的成員的方法。這是一個我自己定制的 WPF 框架,可以在此基礎上構建屬于自己的定制化的 WPF 框架
本文提供的方法適用于 .NET 5 和 x86 下,如果需要其他版本,請自行構建和使用,關于如何自行構建和定制化,請看 手把手教你構建 WPF 框架的私有版本
現在的 WPF 屬于 dotnet 基金會組織下的一個開源倉庫,基于 MIT 協議,意味著我可以進行魔改然后私有發布甚至不再公開源代碼商業使用。而 WPF 是一個跨了很多代技術的框架,在 WPF 倉庫里面既可以看到最新的 .NET 5 的代碼也可以看到上古的 Perl 的構建代碼。這樣就會存在一個問題,本地構建難度很高,調試難度也很高。想要在本地構建出來,需要自己的設備的網絡能訪問世界上任意的網絡。而如果想要在 VisualStudio 上直接構建出來,那就需要很多 msbuild 的預編譯知識,和一些引用關聯知識,雖然不難,但是知識量還是擺在這里的
于是此時的給 WPF 框架開發的勸退力就太足了,想要自己定制化屬于自己的 WPF 框架難度有點大,至少我每次定制化的步驟都有點多。因此我就在摸索最佳實踐,找到了最簡的方法,請看下文
先不聊啥原理,原理部分我將會放在其他的博客里面,原因是原理太多了
使用本文的方法能實現的是,在我提供的程序集里面,可以訪問到 WPF 框架里面所有 internal 內部權限的成員。限制是只適用于 .NET 5 和 x86 下,如需有其他定制還請閱讀我的原理博客,或者找我私聊讓我幫你做一些基礎搭建
在開始之前,需要說明的是,即使是最簡方法,依然還是有一些小限制的。首先你需要本地有安裝 7z 壓縮工具,其次你需要一個包含了最新版本的 VisualStudio 神器
準備好了之后,咱就開始吧
第一步是下載我提供的基礎框架,可以從 CSDN 下載 或者給我一封郵件讓我發給你
第二步是解壓縮下載的基礎框架,下載下來是一個 7z 壓縮包,需要解壓縮才能使用
第三步就是雙擊 dotnetCampus.WPF.sln 打開
好了,賀喜你,基礎部分就完成了,接下來就只需要在 Program.cs 寫代碼就可以了。在 dotnetCampus.WPF 程序集里面寫的代碼,能用到 WPF 框架里面所有 internal 內部權限的成員
在 Program.cs 代碼里面可以看到我的模版內容
[STAThread]static void Main(string[] args){var application = new Application();var window = new Window(){Title = "林德熙是逗比"};window.Loaded += (sender, eventArgs) =>{// 這里的 GetAppWindow 是 internal 的方法,但是在這個程序集可以訪問var navigationWindow = application.GetAppWindow();};application.Run(window);}如果你嘗試在自己的 WPF 項目里面,調用 Application 類的 GetAppWindow 方法,將會提示你沒有訪問權限或者沒有這個方法。但是在這個程序集里面,你可以隨意的訪問這些 internal 方法
其實 WPF 框架的設計在大體上是十分好的,大部分的定制都能通過調用 itnernal 內部權限成員,如類或方法實現。有了這個基礎框架,就能極大提升開發的 WPF 框架的效率,將大部分的實現邏輯放在 dotnetCampus.WPF 程序集。這樣能提供非常簡單的本地構建調試方法,就和其他基礎項目相同的構建調試方法,不需要去了解 WPF 框架相關構建知識
我推薦使用此方法來進行一部分不更改 WPF 已有邏輯的開發,而事實上作為一個龐大的框架,官方 WPF 團隊其實也不敢合入對已有邏輯有比較多更改的內容,誰知道有哪個模塊靜默依賴了。因此更多的是新加,如新加某些新的類或者多開放某些方法等等。當然了即使是不合入官方倉庫,自己用的,我也不推薦更改已有的邏輯,因為大家也很難測試全。因此在不更改已有的邏輯下,使用此方法開發的效果和在 WPF 項目里面更改的效果幾乎相同
用這個方法構建出來的應用就是用上了自己提供的定制的 WPF 框架,還請大家試試使用此方法
本文提供的這個程序集的最佳實踐方法就是提供轉換器,傳入某個 WPF 框架的類,接著在這個程序集里面使用代理模式這個設計模式將這個類里面的內容開放出來或者進行定制
為什么會選用本文的這個方式來作為最簡方法?原因是如果使用 VisualStudio 進行編輯 WPF 框架,會遇到這樣的問題,更改一點東西就需要來一個構建,而構建 WPF 是一個緩慢的過程。因為我的技術不夠還做不到讓 WPF 框架支持增量編譯,因此每次構建最少都是 20 分鐘。這樣的調試效率太低了
實際上本文提供的方法是給 WPF 每個項目都加上了一句 InternalsVisibleTo 到 dotnetCampus.WPF 程序集而已
使用這個方法也是有缺點的,如需要額外添加整個程序集以及在 dotnetCampus.WPF 程序集里面是不能放 xaml 文件的
我搭建了自己的博客 https://blog.lindexi.com/ 歡迎大家訪問,里面有很多新的博客。只有在我看到博客寫成熟之后才會放在csdn或博客園,但是一旦發布了就不再更新
如果在博客看到有任何不懂的,歡迎交流,我搭建了 dotnet 職業技術學院 歡迎大家加入
如有不方便在博客評論的問題,可以加我 QQ 2844808902 交流
本作品采用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名林德熙(包含鏈接:http://blog.csdn.net/lindexi_gd ),不得用于商業目的,基于本文修改后的作品務必以相同的許可發布。如有任何疑問,請與我聯系。
總結
以上是生活随笔為你收集整理的WPF 最简方法使用自己定制的 WPF 框架的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据库】Hive SQL 正则表达式进
- 下一篇: 手机整人脚本html,vbs整人代码_手