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,顺序别反:先ThemesDictionary再ControlsDictionary。
<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会把每个子项都实例化出来。解法:换成VirtualizingItemsControl或DataGrid,并设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),仅供参考