WPF
文章平均质量分 87
mingupup
热爱C#
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
WPF/C#:使用Microsoft Agent Framework框架创建一个带有审批功能的终端Agent
最近新出了一个Microsoft Agent Framework框架,我感觉还挺有意思的,就通过它的那个例子,做了一个终端助手Agent。我觉得使用这个作为学习人在环上这个例子蛮合适的,因为对于需要执行敏感操作(如系统命令)的场景,人工审批机制显得尤为重要。本文以Rouyan为例,说明如何使用Microsoft Agent Framework创建一个能够执行终端命令并具备人工审批功能的WPF应用。在详细介绍之前,先来看看它的效果。原创 2025-10-20 09:18:15 · 1243 阅读 · 0 评论 -
为WPF应用增加项目图标
本文梳理一下怎么给WPF应用增加自己的项目图标,还是以Rouyan为例进行说明。原创 2025-10-20 09:17:18 · 334 阅读 · 0 评论 -
WPF应用绑定系统快捷键
通过 Win32 API 在用户态安装后,系统在键盘事件产生时会优先回调你提供的函数,让你的程序有机会观察、处理,甚至拦截按键,再将事件传递给系统或其他钩子。在代码中的应用:在 SetHook 方法中调用,获取当前进程主模块的句柄,作为 SetWindowsHookEx 的 hMod 参数,用于关联钩子到当前应用程序模块。意思是安装低级键盘钩子并返回钩子句柄,proc就是钩子的回调方法,然后传入当前这个模块,0表示对系统范围内所有线程生效(全局钩子)。用途:将钩子信息传递给钩子链中的下一个钩子过程。原创 2025-10-16 11:10:20 · 551 阅读 · 0 评论 -
Rouyan:使用WPFC#构建的基于LLM的快捷翻译小工具
都说技术服务于业务,对我个人而言可能谈不上有什么业务,但是确实有一些个人的需求。我很喜欢C#也很喜欢WPF,最近刚学了Stylet这个框架,就想着先试着用它搞一个解决自己阅读英文文献一些小需求的小工具,现在开源出来,希望也能帮助到跟我有一样需求的朋友。Rouyan是一个使用WPF/C#构建的基于LLM的快捷翻译(也能自定义其它功能)的小工具。Rouyan的简介是,说实话实现的功能用ChatBox类工具如CherryStudio也都能实现,所以没什么特别的,只是对我而言有些场景减少了复制粘贴。原创 2025-10-09 12:48:12 · 763 阅读 · 0 评论 -
WPF应用最小化到系统托盘
在现代桌面应用开发中,系统托盘(System Tray)功能已经成为用户体验的重要组成部分。特别是对于需要长时间运行的应用程序,如即时通讯工具、音乐播放器、系统监控工具等,最小化到系统托盘不仅可以节省任务栏空间,还能让应用在后台持续运行,随时为用户提供服务。本文以Rouyan这个WPF应用为例,说明在WPF中如何实现最小化到系统托盘。原创 2025-10-09 12:44:56 · 1133 阅读 · 0 评论 -
理解WPF Stylet中Command=“{s:Action 方法名}“的设计与实现
Stylet是我最近很喜欢使用的一个WPF框架,它的很多设计都体现了约定优于配置的思想。因此你会发现使用它非常方便,几乎不需要任何配置,开箱即用,只需知道它的一些约定即可。然后你点击这个按钮,就会触发对应ViewModel中的SayHello方法,使用起来非常简单方便。这背后Stylet框架做了什么呢?让我们揭开它的神秘面纱吧!!原创 2025-09-24 10:27:02 · 548 阅读 · 0 评论 -
WPF依赖属性学习
WPF 依赖属性(Dependency Property)是 WPF 框架的核心基础设施之一,它扩展了传统 .NET 属性的能力,为 WPF 提供数据绑定、动画、样式、继承值、属性值变更通知等高级功能。为什么需要设计依赖属性?因为依赖属性做到了CLR属性没做到的一些事情。1、数据驱动 UI 的动态性需要“可计算的值在 WPF 里,绑定的值、样式 Setter 的值、触发器的值、动画帧的值,都是事后才知道的,甚至可以在运行时不断切换来源。CLR 属性:值写死在一个私有字段里,谁最后 set 就留谁。原创 2025-09-23 09:08:51 · 835 阅读 · 0 评论 -
WPF原生实现命令例子
最近在学习Stylet中Command="{s:Action 方法名}"的设计与实现,但要弄明白这个之前,必须对原生实现命令比较熟悉,一想我也很久没有自己实现原生的命令了,之前都是用库来实现,所以今天先来回顾一下,在WPF中如何实现原生的命令。原创 2025-09-23 09:07:40 · 877 阅读 · 0 评论 -
Stylet启动机制详解:从Bootstrap到View显示
今天以这个demo为例,学习一下Stylet的启动机制。平常我们新建一个WPF程序结构是这样的:启动之后就是这样的:为什么启动之后是这样的呢?我们知道是因为在App.xaml中我们设置了。现在来看看的结构:我们发现它删掉了StartupUri,然后多了一个。说明启动起来就显示ShellView的玄机就在其中!!原创 2025-08-18 13:54:09 · 1121 阅读 · 0 评论 -
WPF Stylet可以如何实现导航功能?
本文是学习Stylet中导航Demo的总结,希望对你有所帮助。Demo所在的位置:先看一下导航的效果:首页通过上面导航到Page 2:Stylet导航功能的实现主要是通过实现的。!原创 2025-08-18 13:53:15 · 346 阅读 · 0 评论 -
WPF优秀项目推荐:Stylet 一个非常轻量但强大的 ViewModel-First MVVM 框架
Stylet 是一个小型但功能强大的 ViewModel 优先的 MVVM 框架,适用于 WPF (.NET 4.5.2+ 和 .NET Core 3.0+),它允许您编写易于测试的可维护和可扩展的代码。Stylet 的目标是:解决没有框架时阻碍 MVVM 开发的障碍、烦恼和不便,使用简单但强大的概念。对于第一次接触您项目的人员来说是显而易见的:几乎没有什么魔法。易于验证/验证。代码行数较少,并附有非常全面的测试套件。代码编写良好且文档齐全。提供灵活性同时提供合理的默认值。原创 2025-08-14 19:17:17 · 677 阅读 · 0 评论 -
WPF Prism ViewInjection
ViewInjection是Prism框架提供的一种机制,用于将视图动态地注入到指定的容器(Region)中。这种注入方式允许你在运行时动态地添加、移除或替换视图,从而实现更灵活的用户界面设计。原创 2024-12-13 19:56:08 · 699 阅读 · 0 评论 -
C#调用Python脚本的方式(一),以PaddleOCR-GUI为例
每种语言都有每种语言的优势,Python由于其强大的生态,很多任务通过调用包就可以实现,那么学会从C#项目中调用Python脚本完成任务就很重要。C#调用Python代码有多种方式,如果Python那边内容比较多,可以考虑起一个Web Api进行调用,如果只是一个简单的脚本而且不需要频繁调用,那么可以考虑使用Process类创建一个进程来调用,如果有几个方法,并且需要进行数据交互,并可能会频繁调用,那么可以考虑使用pythonnet。原创 2024-12-13 19:54:30 · 1312 阅读 · 0 评论 -
VLM-OCR-Demo:一个使用VLM用于OCR任务的示例
上一篇文章TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面中我们构建了一个方便使用TesseractOCR的用户界面,今天构建一个类似的界面,使用Semantic Kernel接入视觉模型,测试一下用视觉模型做OCR任务的效果。在之前的文章使用Tesseract进行图片文字识别的总结中说了使用VLM做这个任务的缺点,经过测试之后,发现确实存在。原创 2024-12-09 12:02:59 · 759 阅读 · 0 评论 -
WPF Prism ViewDiscovery
在 WPF Prism 应用程序中,View Discovery 是一个用于发现和注册视图(View)的机制。它允许您将视图与特定的区域(Region)相关联,并在运行时自动将视图添加到该区域中。区域(Region):区域是 UI 中的一个逻辑部分,用于容纳视图。例如,主窗口的左侧面板可以是一个区域,右侧面板可以是另一个区域。视图(View):视图是用户界面的一个部分,通常实现为一个 UserControl 或一个自定义控件。视图发现(View Discovery)原创 2024-12-07 14:48:53 · 1425 阅读 · 0 评论 -
TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面
前篇文章使用Tesseract进行图片文字识别介绍了如何安装TesseractOCR与TesseractOCR的命令行使用。但在日常使用过程中,命令行使用还是不太方便的,因此今天介绍一下如何使用WPF/C#构建TesseractOCR简单易用的用户界面。本项目可以帮助人们更简单方便地使用TesseractOCR,对WPF/C#新手程序员,也可以当作一个简单的练手小项目。如果对你有所帮助,点颗star,就是最大的支持!!原创 2024-12-07 14:47:27 · 739 阅读 · 0 评论 -
WPF Prism 01-BootstrapperShell
Prism 是一个用于在 WPF、.NET MAUI、Uno 平台和 Xamarin Forms 中构建松耦合、可维护和可测试的 XAML 应用程序的框架。每个平台都有单独的发布版本,并且这些版本将在独立的开发时间线上进行开发。Prism 提供了一组设计模式的实现,这些模式有助于编写结构良好且可维护的 XAML 应用程序,包括 MVVM、依赖注入、命令、EventAggregator 等。原创 2024-12-06 11:32:48 · 1124 阅读 · 0 评论 -
SimpleRAG-v1.0.3:增加文件对话功能
我上传这个文档之后,提问文档中的内容,如下所示:那么我们自己该如何实现这个功能呢?我们之前接触过RAG,那可以用来应对文档内容超出模型上下文的情况,但是很多时候,我们只是上传一份简单的文档,文档内容并不多,而且也不需要进行存储,那么这时候,就可以直接读文件内容,不用RAG。以下是自己实现的效果:也实现了同样的效果。原创 2024-10-09 12:01:00 · 409 阅读 · 0 评论 -
如何自己动手实现一个图片解答小助手
之前使用PaddleOCR的时候,我已经在电脑上安装了一个虚拟环境,因为需求比较简单,就是将图片进行文字识别之后返回文本就行了,因此今天玩个不一样的,不用.NET绑定,直接调用Python脚本就好了。这样可以用于拍照向AI提问的场景,我自己也有这方面的需求,因此动手实践了一下。现在就需要与大语言模型结合起来了,就是将识别出来的文字,丢给大语言模型。那么再拆解一下任务,我们需要在命令行中传入一个参数,该如何实现呢?获取到了Python脚本输出的值。现在图片文字识别的部分已经搞定了。原创 2024-10-09 11:59:29 · 1506 阅读 · 0 评论 -
SimpleAIAgent:使用免费的glm-4-flash即可开始构建简单的AI Agent应用
SimpleAIAgent是基于C# Semantic Kernel 与 WPF构建的一款AI Agent探索应用。主要用于使用国产大语言模型或开源大语言模型构建AI Agent应用的探索学习,希望能够帮助到感兴趣的朋友。接下来我想分享一下我的AI Agent应用实践。原创 2024-09-25 12:43:07 · 1018 阅读 · 1 评论 -
SimpleAISearch:C# + DuckDuckGo 实现简单的AI搜索
最近AI搜索很火爆,有Perplexity、秘塔AI、MindSearch、Perplexica、memfree、khoj等等。在使用大语言模型的过程中,或许你也遇到了这种局限,就是无法获取网上最新的信息,导致回答的内容不是基于最新的信息,为了解决这个问题,可以通过LLM+搜索引擎的方式实现。以我之前开源的一个简单项目为例,如果直接问一般的大语言模型是不知道的,如下所示:对比可以联网的回答:PerplexitykhojKimi那么我们如何自己实现类似的效果呢?原创 2024-09-20 12:06:00 · 678 阅读 · 0 评论 -
SimpleTranslationAIAgent借助SiliconCloud API 构建自己的专属翻译助手
SimpleTranslationAIAgent是一款基于C#与LLM通过简单对话即可实现文件到文件的翻译任务的简单应用,基于WPF与Semantic Kernel构建。该软件是MIT协议完全开源免费的,但是调用LLM的API可能需要费用,但是没关系,赛博菩萨硅基流动有免费的模型可调了。这个Translation AI Agent只是一个简单的AI Agent示例应用,可能很多人都不需要它。原创 2024-08-31 14:01:41 · 1070 阅读 · 0 评论 -
SimpleTranslationAIAgent:基于C#与LLM的翻译AI Agent
当应用比较简单时,可能免费的模型就可以了,但是当应用比较复杂时,可能需要更强的模型才行了。开源出来主要是为了感兴趣的同学可以在看源码之后,也可以使用C#+LLM构建出更有意思更能提高自己工作效率的自己专属的AI Agent应用!该软件是MIT协议完全开源免费的,但是调用LLM的API可能需要费用,但是没关系,赛博菩萨硅基流动与智谱AI等都有免费的模型可调了。如果一个模型返回出错,可以重试,重试不行就可以换个模型试试了,越强的模型,成功的几率越高。原创 2024-08-31 14:00:53 · 1168 阅读 · 0 评论 -
在SimpleRAG中使用SiliconCloud快速测试Function Calling
函数调用允许您将模型如gpt-4o与外部工具和系统连接起来。这对于许多事情都很有用,比如为AI助手赋能,或者在你的应用程序与模型之间建立深度集成。如果您了解或者使用过Semantic Kernel可能会发现除了OpenAI支持Function Calling的模型之外,自动函数调用好像并不好用,国产大模型几乎都不能使用,由于想解决这个问题,在GitHub上找到了一个大佬的方法。原创 2024-08-29 08:04:05 · 2108 阅读 · 0 评论 -
使用Ollama本地离线体验SimpleRAG(手把手教程)
Ollama是一个开源项目,专注于开发和部署大语言模型,特别是像LLaMA这样的模型,用于生成高质量的文本和进行复杂的自然语言处理任务。Ollama的目标是让大语言模型的运行和使用变得更加容易和普及,而无需复杂的基础设施或深度的机器学习知识。GitHub地址:https://github.com/ollama/ollamaSimpleRAG是基于WPF与Semantic Kernel实现的一个简单的RAG应用,可用于学习与理解如何使用Semantic Kernel构建一个简单的RAG应用。原创 2024-08-22 15:15:26 · 1487 阅读 · 0 评论 -
使用SiliconCloud快速体验SimpleRAG(手把手教程)
基于优秀的开源基础模型,提供高性价比的 GenAI 服务。不同于多数大模型云服务平台只提供自家大模型 API,上架了包括 Qwen、DeepSeek、GLM、Yi、Mistral、LLaMA 3、SDXL、InstantID 在内的多种开源大语言模型及图片生成模型,用户可自由切换适合不同应用场景的模型。更重要的是,SiliconCloud 提供开箱即用的大模型推理加速服务,为您的 GenAI 应用带来更高效的用户体验。对开发者来说,通过 SiliconCloud 即可一键接入顶级开源大模型。原创 2024-08-22 15:10:34 · 1604 阅读 · 0 评论 -
SimpleRAG:基于WPF与Semantic Kernel实现的一个简单的RAG应用
SimpleRAG是基于WPF与Semantic Kernel实现的一个简单的RAG应用,可用于学习与理解如何使用Semantic Kernel构建RAG应用。GitHub地址:https://github.com/Ming-jiayou/SimpleRAG如果对您有所帮助,点个star✨,就是最大的支持😊。原创 2024-08-19 17:27:15 · 572 阅读 · 0 评论 -
SemanticKernel/C#:实现接口,接入本地嵌入模型
本文通过Codeblaze.SemanticKernel这个项目,学习如何实现ITextEmbeddingGenerationService接口,接入本地嵌入模型。项目地址:https://github.com/BLaZeKiLL/Codeblaze.SemanticKernel。原创 2024-08-06 09:55:25 · 1413 阅读 · 0 评论 -
ScreenToGif:一款开源免费且好用的录屏转Gif软件
GitHub上的介绍:此工具允许您记录屏幕的选定区域、来自网络摄像头的实时提要或来自草图板的实时绘图。之后,您可以编辑动画并将其保存为 gif、apng、视频、psd 或 png 图像。在平常写公众号的过程中,经常有录屏转Gif的需求,我就是使用ScreenToGif做的。在截止写这篇文章,该项目已经获得了23.1k starts!原创 2024-07-18 15:26:35 · 766 阅读 · 0 评论 -
WPF/C#:实现导航功能
在WPF中使用导航功能可以使用Frame控件,这是比较基础的一种方法。前几天分享了wpfui中NavigationView的基本用法,但是如果真正在项目中使用起来,基础的用法是无法满足的。今天通过wpfui中的mvvm例子来说明在wpfui中如何通过依赖注入与MVVM模式使用导航功能。实践起来,我个人觉得这个例子中实现导航功能还是有点麻烦的,但我也不知道怎么能更优雅,也是学到了一些东西吧。原创 2024-07-18 15:24:29 · 2912 阅读 · 0 评论 -
WPF/C#:在WPF中如何实现依赖注入
本文通过 WPF Gallery 这个项目学习依赖注入的相关概念与如何在WPF中进行依赖注入。依赖注入(Dependency Injection,简称DI)是一种设计模式,用于实现控制反转(Inversion of Control,简称IoC)原则。依赖注入的主要目的是将对象的创建和对象之间的依赖关系的管理从对象内部转移到外部容器或框架中,从而提高代码的可维护性、可测试性和灵活性。依赖注入的核心概念依赖:一个对象需要另一个对象来完成其工作,那么前者就依赖于后者。原创 2024-07-11 10:52:47 · 1822 阅读 · 0 评论 -
WPF在.NET9中的重大更新:Windows 11 主题
源代码在[WPF-Samples/Sample Applications/WPFGallery at main · microsoft/WPF-Samples (github.com)](https://github.com/microsoft/WPF-Samples/tree/main/Sample Applications/WPFGallery)WPF团队相信,更新WPF的样式以匹配 Windows 11 中使用的样式将帮助 WPF 开发人员创建更一致的 Windows 体验。希望WPF越来越好。原创 2024-07-02 12:06:14 · 2089 阅读 · 0 评论 -
WPF/C#:BusinessLayerValidation
本文介绍了在WPF/C#中如何实现业务层验证。原创 2024-06-27 10:51:21 · 1212 阅读 · 0 评论 -
WPF/C#:如何实现拖拉元素
本文介绍了在WPF/C#中如何实现拖拉元素。原创 2024-06-27 10:49:15 · 938 阅读 · 0 评论 -
WPF/C#:在DataGrid中显示选择框
本文介绍了WPF如何在DataGrid中添加一列选择框。原创 2024-06-21 11:31:12 · 1619 阅读 · 0 评论 -
WPF/C#:数据绑定到方法
本文介绍了WPF中如何数据绑定到方法。原创 2024-06-21 11:29:21 · 613 阅读 · 0 评论 -
wpfui:一个开源免费具有现代化设计趋势的WPF控件库
wpfui是一款开源免费(MIT协议)具有现代化设计趋势的WPF界面库。wpfui为wpf的界面开发提供了流畅的体验,提供了一个简单的方法,让使用WPF编写的应用程序跟上现代设计趋势。截止写这篇文章,该项目获得了6.7k starts。最近我也在使用wpfui,整体使用下来感觉非常不错,因此想写一篇文章介绍一下wpfui。原创 2024-06-19 13:11:04 · 8188 阅读 · 1 评论 -
WPF/C#:显示分组数据的两种方式
本文介绍自己在遇到WPF对数据进行分组显示的需求时,可以选择的两种方案。一种方案基于,另一种方案基于IGrouping。原创 2024-06-19 13:09:44 · 995 阅读 · 0 评论 -
LiveCharts2:简单灵活交互式且功能强大的.NET图表库
之前的文章中提到过ScottPlot、与oxyplot,这两个是比较常用的.NET图表库,今天介绍一款新的.NET图表库:LiveCharts2。LiveCharts2 是一个现代化的数据可视化库,用于创建动态和交互式图表,支持 .NET 平台。它是 LiveCharts 的进化版,旨在提供更高性能、更灵活和更易于使用的图表解决方案。LiveCharts2 支持多种图表类型,包括折线图、柱状图、饼图、散点图等,适用于各种数据展示需求。原创 2024-06-18 09:43:47 · 3749 阅读 · 0 评论 -
WPF/C#:更改界面的样式
现在来看看ResourceDictionary是什么?在WPF中,资源字典(ResourceDictionary)是一个非常重要的特性,它用于存储和管理可重用的资源,如样式、控件模板、颜色、字体等。通过使用ResourceDictionary,你可以在一个集中的位置定义这些资源,并在整个应用程序中重用它们,这有助于保持应用程序的一致性和减少代码的重复。资源字典是应用使用的 XAML 资源(如样式)的存储库。在 XAML 中定义资源,然后可以使用。原创 2024-06-17 16:56:34 · 1292 阅读 · 0 评论
分享