日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

現代WPF界面輕松實現:探秘輕量級WPFUI庫,MVVM與依賴注入一體化

來源: 責編: 時間:2024-03-26 09:34:27 224觀看
導讀概述:一款名為WPFUI的輕量級開源庫,為WPF應用程序提供現代化界面。支持MVVM和Microsoft.Extensions.DependencyInjection,簡單上手。無第三方依賴,內置兩套皮膚,可自定義樣式。適用于一般應用場景,不受MVVM框架限制。通過簡

Ful28資訊網——每日最新資訊28at.com

概述:一款名為WPFUI的輕量級開源庫,為WPF應用程序提供現代化界面。支持MVVM和Microsoft.Extensions.DependencyInjection,簡單上手。無第三方依賴,內置兩套皮膚,可自定義樣式。適用于一般應用場景,不受MVVM框架限制。通過簡單的引用和配置,快速構建現代化WPF應用,提升用戶體驗Ful28資訊網——每日最新資訊28at.com

最近要做個小工具軟件,發現以前用的WPF界面有點老了,所以在網上找下,發現一個用起來還可以的WPFUI庫,MVVM也支持得很好,同時支持微軟官方的依賴注入框架Microsoft.Extensions.DependencyInjection。Ful28資訊網——每日最新資訊28at.com

先來看看運行效果:Ful28資訊網——每日最新資訊28at.com

Ful28資訊網——每日最新資訊28at.com

使用方法也比較簡單。Ful28資訊網——每日最新資訊28at.com

1、引用庫:

Ful28資訊網——每日最新資訊28at.com

2、App.xaml引入資源

<Application    x:Class="DesktopApp.App"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"    DispatcherUnhandledException="OnDispatcherUnhandledException"    Exit="OnExit"    Startup="OnStartup">    <Application.Resources>        <ResourceDictionary>            <ResourceDictionary.MergedDictionaries>                <ui:ThemesDictionary Theme="Dark" />                <ui:ControlsDictionary />            </ResourceDictionary.MergedDictionaries>        </ResourceDictionary>    </Application.Resources></Application>

3、App.xaml.cs注冊相關的Page、ViewModel、Service

public partial class App    {        // The.NET Generic Host provides dependency injection, configuration, logging, and other services.        // https://docs.microsoft.com/dotnet/core/extensions/generic-host        // https://docs.microsoft.com/dotnet/core/extensions/dependency-injection        // https://docs.microsoft.com/dotnet/core/extensions/configuration        // https://docs.microsoft.com/dotnet/core/extensions/logging        private static readonly IHost _host = Host            .CreateDefaultBuilder()            .ConfigureAppConfiguration(c => { c.SetBasePath(Path.GetDirectoryName(Assembly.GetEntryAssembly()!.Location)); })            .ConfigureServices((context, services) =>            {                services.AddHostedService<ApplicationHostService>();                services.AddSingleton<MainWindow>();                services.AddSingleton<MainWindowViewModel>();                services.AddSingleton<INavigationService, NavigationService>();                services.AddSingleton<ISnackbarService, SnackbarService>();                services.AddSingleton<IContentDialogService, ContentDialogService>();                services.AddSingleton<DashboardPage>();                services.AddSingleton<DashboardViewModel>();                services.AddSingleton<DataPage>();                services.AddSingleton<DataViewModel>();                services.AddSingleton<SettingsPage>();                services.AddSingleton<SettingsViewModel>();            }).Build();        /// <summary>        /// Gets registered service.        /// </summary>        /// <typeparam name="T">Type of the service to get.</typeparam>        /// <returns>Instance of the service or <see langword="null"/>.</returns>        public static T GetService<T>()            where T : class        {            return _host.Services.GetService(typeof(T)) as T;        }        /// <summary>        /// Occurs when the application is loading.        /// </summary>        private void OnStartup(object sender, StartupEventArgs e)        {            _host.Start();            Wpf.Ui.Appearance.Theme.Apply(Wpf.Ui.Appearance.ThemeType.Dark);        }        /// <summary>        /// Occurs when the application is closing.        /// </summary>        private async void OnExit(object sender, ExitEventArgs e)        {            await _host.StopAsync();            _host.Dispose();        }        /// <summary>        /// Occurs when an exception is thrown by an application but not handled.        /// </summary>        private void OnDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)        {            // For more info see https://docs.microsoft.com/en-us/dotnet/api/system.windows.application.dispatcherunhandledexception?view=windowsdesktop-6.0        }

4、MainWindow頁面進行主界面布局

這個代碼有點多就不粘了,文章結尾有源代碼下載,如果感興趣可以下載看看。Ful28資訊網——每日最新資訊28at.com

5、優點

  • 這個庫包含了一些常用的控件沒有過多的封裝(輕量級),但足夠一般應用場景使用
  • 包含了兩套皮膚(如果不滿意可以自定義樣式個性色調)
  • 沒有其它第三方的依賴,使用起來比較簡單
  • 使用官方Microsoft.Extensions.DependencyInjection作為依賴注入框架,也可以使用其他的
  • 沒有MVVM框架的限制,可以使用CommunityToolkit.Mvvm、Prism或其他的

再附上幾張效果圖:Ful28資訊網——每日最新資訊28at.com

Ful28資訊網——每日最新資訊28at.com

Ful28資訊網——每日最新資訊28at.com

Ful28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-79294-0.html現代WPF界面輕松實現:探秘輕量級WPFUI庫,MVVM與依賴注入一體化

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Python 集成測試: 提高軟件質量的關鍵步驟

下一篇: 非Controller控制層參數校驗要怎么做

標簽:
  • 熱門焦點
  • 2023 年的 Node.js 生態系統

    隨著技術的不斷演進和創新,Node.js 在 2023 年達到了一個新的高度。Node.js 擁有一個龐大的生態系統,可以幫助開發人員更快地實現復雜的應用。本文就來看看 Node.js 最新的生
  • CSS單標簽實現轉轉logo

    轉轉品牌升級后更新了全新的Logo,今天我們用純CSS來實現轉轉的新Logo,為了有一定的挑戰性,這里我們只使用一個標簽實現,將最大化的使用CSS能力完成Logo的繪制與動畫效果。新logo
  • 三言兩語說透設計模式的藝術-單例模式

    寫在前面單例模式是一種常用的軟件設計模式,它所創建的對象只有一個實例,且該實例易于被外界訪問。單例對象由于只有一個實例,所以它可以方便地被系統中的其他對象共享,從而減少
  • Java NIO內存映射文件:提高文件讀寫效率的優秀實踐!

    Java的NIO庫提供了內存映射文件的支持,它可以將文件映射到內存中,從而可以更快地讀取和寫入文件數據。本文將對Java內存映射文件進行詳細的介紹和演示。內存映射文件概述內存
  • ESG的面子與里子

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預警不絕,但處于厄爾尼諾大&ldquo;烤&rdquo;之下的除了眾生,還有各大企業發布的ESG報告。ESG是&ldquo;環境保
  • 馮提莫簽約抖音公會 前“斗魚一姐”消失在直播間

    來源:直播觀察提起&ldquo;馮提莫&rdquo;這個名字,很多網友或許聽過,但應該不記得她是哪位主播了。其實,作為曾經的&ldquo;斗魚一姐&rdquo;,馮提莫在游戲直播的年代影響力不輸于現
  • 華為Mate60標準版細節曝光:經典星環相機模組回歸

    這段時間以來,關于華為新旗艦的爆料日漸密集。據此前多方爆料,今年華為將開始恢復一年雙旗艦戰略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • 蘋果公司要求三星和LG Display生產「無邊框」OLED iPhone顯示屏

    據 The Elec 報道,蘋果已要求其供應商為未來的 iPhone 型號開發「無邊框」OLED 顯示面板。蘋果顯然已要求三星和 LG Display 開發新的 OLED 顯示面
  • “買真退假” 這種“羊毛”不能薅

    □ 法治日報 記者 王春   □ 本報通訊員 胡佳麗  2020年初,還在上大學的小東加入了一個大學生兼職QQ群。群主&ldquo;七王&rdquo;在群里介紹一些刷單賺
Top 主站蜘蛛池模板: 武义县| 手机| 霸州市| 伊金霍洛旗| 四平市| 龙岩市| 禹州市| 新建县| 鄂托克前旗| 深州市| 防城港市| 本溪| 荆门市| 平罗县| 灌南县| 莱西市| 日喀则市| 肥城市| 来凤县| 县级市| 中宁县| 新竹县| 屏南县| 汪清县| 清苑县| 侯马市| 高邑县| 千阳县| 建宁县| 宁城县| 温宿县| 马尔康县| 团风县| 娱乐| 府谷县| 邹城市| 宣化县| 龙泉市| 昌宁县| 健康| 扬中市|