概述:一款名为WPFUI的轻量级开源库,为WPF应用程序提供现代化界面。支持MVVM和Microsoft.Extensions.DependencyInjection,简单上手。无第三方依赖,内置两套皮肤,可自定义样式。适用于一般应用场景,不受MVVM框架限制。通过简单的引用和配置,快速构建现代化WPF应用,提升用户体验
最近要做个小工具软件,发现以前用的WPF界面有点老了,所以在网上找下,发现一个用起来还可以的WPFUI库,MVVM也支持得很好,同时支持微软官方的依赖注入框架Microsoft.Extensions.DependencyInjection。
先来看看运行效果:
使用方法也比较简单。
<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>
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 }
这个代码有点多就不粘了,文章结尾有源代码下载,如果感兴趣可以下载看看。
再附上几张效果图:
本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-79294-0.html现代WPF界面轻松实现:探秘轻量级WPFUI库,MVVM与依赖注入一体化
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com