WPF UI 控件库上手指南:200+ 组件,从空窗口到 Fluent 界面
2026/8/24 2:06:50 网站建设 项目流程

WPF UI 控件库上手指南:200+ 组件,从空窗口到 Fluent 界面

【免费下载链接】wpfuiWPF UI provides the Fluent experience in your known and loved WPF framework. Intuitive design, themes, navigation and new immersive controls. All natively and effortlessly.项目地址: https://gitcode.com/GitHub_Trending/wp/wpfui

写过 WPF 的人都踩过同一个坑:样式在三个页面各复制一份,深色模式上线时把所有画刷手动改一遍,导航栏还要自己写切换逻辑。WPF UI 控件库把这些都打包好了——Fluent 风格、200+ 界面组件、主题和导航开箱即用。适合刚上手 WPF 的初学者和独立开发者,装个 NuGet 包就能用。

图源:docs/images/(Wpf.Ui.Gallery 演示应用截图)

最短路径:WPF 控件库怎么装

NuGet 里只有这一步

在 NuGet 里装WPF-UI(注意包名带连字符)。项目目标框架支持 .NET 8、9、10,也支持 .NET Framework 4.6.2 起的老项目,UseWPF打开即可。

App.xaml 只改两行

把下面两行合并进Application.Resources,顺序别反:先ThemesDictionaryControlsDictionary

<ui:ThemesDictionary Theme="Light" /> <ui:ControlsDictionary />

第一个 Fluent 窗口

窗口根元素换成FluentWindow,加上WindowBackdropType="Mica",标题栏背后就是半透明模糊效果,不写一行 P/Invoke。

<ui:FluentWindow xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml" WindowBackdropType="Mica" WindowCornerPreference="Round" Title="My App"> <Grid> <ui:Button Content="提交" IconSource.Symbol="CheckMark24" /> </Grid> </ui:FluentWindow>

三个真实场景:WPF 界面组件能干什么

窗口外观与主题切换

ApplicationThemeManager内置 Light、Dark、HighContrast 三套主题。想让用户在设置页点一下就换深色:

ApplicationThemeManager.Apply(ApplicationTheme.Dark);

不想让用户操心?在App.xaml.cs里加一行,应用自动跟随系统深色模式:

SystemThemeWatcher.Watch(this);

WPF 导航栏实现

NavigationView一个控件搞定侧边菜单、面包屑和页面切换。菜单项把TargetPageType指向你的 Page 类型即可,路由不用手写;Header里塞一个BreadcrumbBar就是面包屑,FooterMenuItems放"设置"这种常驻项。仓库示例见 samples/Wpf.Ui.Demo.Simple/。

表格与数据展示

  • DataGrid:排序、筛选、单元格模板,绑定集合即可
  • VirtualizingItemsControl:长列表虚拟化,下面避坑部分再展开
  • TreeView / TreeGrid:层级数据两种形态

行级提示直接挂InfoBar,级别和内容都能绑定:

<ui:InfoBar IsOpen="True" Message="{Binding LastSyncResult}" Severity="{Binding LastSyncSeverity}" />

图源:docs/images/(Gallery 应用内嵌的 Monaco 编辑器页面)

实战避坑:三个高频问题

切深色主题没反应

现象ThemesDictionary写的是Theme="Light",代码里调了Apply(Dark),窗口还是亮的。原因Apply必须在字典加载完成后执行,太早调用会被初始字典覆盖。解法:在App.OnStartup里调ApplySystemTheme()Apply(Dark),顺序对了颜色立刻变。

深色模式文字看不清

现象:切换后部分文字"隐身"。原因:XAML 里硬编码了#FFFFFF这类固定画刷,它不跟主题走。解法:改用库内置主题画刷,例如DynamicResource TextFillColorPrimaryBrush,深浅两态自动适配。

几千行列表一滚就卡

现象:数据量上万时滚动掉帧。原因:普通ItemsControl会把每个子项都实例化出来。解法:换成VirtualizingItemsControlDataGrid,并设ScrollViewer.CanContentScroll="False"按像素滚动——仓库的 samples/Wpf.Ui.Demo.Mvvm/Views/Pages/DataPage.xaml 就是这个写法。

导航逻辑别再写进后台代码

现象:页面切换、缓存判断堆在.xaml.cs里,难维护。解法:把TargetPageType写进 XAML,库自动处理 Frame 导航;MVVM 项目可再引Wpf.Ui.DependencyInjection,配合 CommunityToolkit.Mvvm 从 ViewModel 触发导航。完整对照示例在 samples/Wpf.Ui.Demo.Mvvm/。

下一步:按这个顺序读

路径读什么
docs/documentation/getting-started.md字典合并规则、命名空间、首个控件
samples/Wpf.Ui.Demo.Simple/最小 Demo:窗口、导航、托盘各几行
samples/Wpf.Ui.Demo.Mvvm/DI 容器 + 导航服务 + 页面组织的完整 MVVM 结构
src/Wpf.Ui/Controls/200+ 控件源码,每个控件一个文件夹,按目录浏览
src/Wpf.Ui.Gallery/所有控件的可运行演示页,看不懂就照抄

想从源码跑起来:

git clone https://gitcode.com/GitHub_Trending/wp/wpfui

【免费下载链接】wpfuiWPF UI provides the Fluent experience in your known and loved WPF framework. Intuitive design, themes, navigation and new immersive controls. All natively and effortlessly.项目地址: https://gitcode.com/GitHub_Trending/wp/wpfui

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询