自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

現(xiàn)代WPF界面輕松實(shí)現(xiàn):探秘輕量級WPFUI庫,MVVM與依賴注入一體化

開發(fā) 后端
最近要做個(gè)小工具軟件,發(fā)現(xiàn)以前用的WPF界面有點(diǎn)老了,所以在網(wǎng)上找下,發(fā)現(xiàn)一個(gè)用起來還可以的WPFUI庫,MVVM也支持得很好,同時(shí)支持微軟官方的依賴注入框架Microsoft.Extensions.DependencyInjection。

概述:一款名為WPFUI的輕量級開源庫,為WPF應(yīng)用程序提供現(xiàn)代化界面。支持MVVM和Microsoft.Extensions.DependencyInjection,簡單上手。無第三方依賴,內(nèi)置兩套皮膚,可自定義樣式。適用于一般應(yīng)用場景,不受MVVM框架限制。通過簡單的引用和配置,快速構(gòu)建現(xiàn)代化WPF應(yīng)用,提升用戶體驗(yàn)

最近要做個(gè)小工具軟件,發(fā)現(xiàn)以前用的WPF界面有點(diǎn)老了,所以在網(wǎng)上找下,發(fā)現(xiàn)一個(gè)用起來還可以的WPFUI庫,MVVM也支持得很好,同時(shí)支持微軟官方的依賴注入框架Microsoft.Extensions.DependencyInjection。

先來看看運(yùn)行效果:

使用方法也比較簡單。

1、引用庫:

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注冊相關(guān)的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頁面進(jìn)行主界面布局

這個(gè)代碼有點(diǎn)多就不粘了,文章結(jié)尾有源代碼下載,如果感興趣可以下載看看。

5、優(yōu)點(diǎn)

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

再附上幾張效果圖:

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2009-09-07 23:09:17

2024-01-02 08:22:01

Koin框架項(xiàng)目

2023-11-16 13:24:39

OceanBase數(shù)據(jù)庫

2023-12-20 07:35:03

大模型數(shù)據(jù)治理機(jī)器學(xué)習(xí)

2009-12-03 15:34:41

Suse Linux

2009-07-02 09:32:00

2011-05-24 09:26:02

有線無線3G

2009-08-17 22:32:25

IT運(yùn)維管理監(jiān)控運(yùn)維一體化摩卡

2020-04-24 11:13:50

物聯(lián)網(wǎng)智慧社區(qū)技術(shù)

2023-06-28 08:16:50

Autofac應(yīng)用程序

2017-05-16 10:46:06

博陽咨詢流程管理

2014-12-25 11:25:31

2023-07-19 22:13:25

一體化推送平臺(tái)

2009-03-19 09:50:00

華為機(jī)房一體化

2014-10-14 10:45:18

用友

2013-11-08 18:01:43

SAP中國商業(yè)同略會(huì)

2009-02-06 14:12:00

數(shù)據(jù)中心機(jī)房

2014-11-06 10:31:55

移動(dòng)營銷
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號