WPF+OllamaSharpe实现本地聊天功能。 Ollama 是一个开源的大型语言模型(LLM)平台,提供了一个简单的方式来加载和使用各种预训练的语言模型,支持文本生成、翻译、代码编写、问答等多种自然语言处理任务。 还提供了方便的界面和 API,使得从文本生成、对话系统到语义分析等任务都能快速实现。 相关依赖: OllamaSharpe:启用本地Ollama服务 Markdig.wpf : Markdown格式化输出功能。 Microsoft.Xaml.Behaviors.Wpf :解决部分不能进行命令绑定的控件实现命令绑定功能。 实现功能: 1、添加折叠栏展开|折叠功能。 2、视图切换功能 1)系统设置 2) 聊天 3、关闭窗体时提示是否关闭,释放相关资源。 4、添加首页功能,和修改新聊天功能。点击新聊天会创建新的会话(Chat)。 5、窗体加载时传递Ollama对象。 6、添加了窗体加载时,加载聊天记录的功能。 7、添加AI聊天功能,输出问题及结果到UI,并使用Markdown相关的库做简单渲染。 8、优化了构造函数,使用无参构造,方便在设计器中直接绑定数据上下文。
2025-06-23 15:17:23 3.83MB wpf
1
Ollama本地模型对话、选择本地文件、本地图像对话 1、新增根据聊天记录回复的功能。 2、优化了部分ViewModel,将对应Model字段、属性移到Model中,方便后续扩展。 3、新增读取外部数据回复问题功能,目前支持txt文件。 4、新增添加图片提问题功能,模型需要支持视觉(如:minicpm-v:latest)。 5、优化了类结构,创建对应的Model(MainWindowModel),将所有字段、属性移到Model。 6、新增聊天记录窗体,修改了窗体加载时,加载聊天记录的功能。将其拆分成一个视图。 7、移除了折叠栏功能,更新为Grid区域的显示与隐藏。 将聊天记录列表从主窗体中分离)。 8、更新记录文件加载功能,显示提问日期。 新增选择文件类型设置预览图标。 9、新增功能,新聊天后第一次提问完成后,保存的记录刷新到记录列表、记录删除功能。 10、新增功能,创建新窗体判断显示Ollama服务运行状态。
2025-06-23 14:16:30 5.12MB WPF AI
1
ES581作为CAN模块进行报文收发与录制的C#WPF源码,涉及的是一个特定硬件ES581与CAN总线通信技术相结合的软件开发项目。该项目利用C#语言和WPF(Windows Presentation Foundation)框架,为用户提供了一套完整的界面和逻辑代码,以实现对ES581模块的控制,以及通过该模块收发CAN总线上的消息。 在此项目中,开发者通过WPF设计了一个直观的用户界面,用户可以通过这个界面发送和接收CAN报文。同时,源码还包含了对ES581模块的底层操作,涉及硬件初始化、报文的封装、发送、接收和解析等。这不仅需要对C#编程语言有深入的理解,还需熟悉CAN通信协议以及ES581模块的技术细节。 C#WPF源码部分通常包含了用户界面的XAML定义文件,其中描述了界面的布局、控件和样式;以及相应的C#后台代码文件,用于处理用户交互、业务逻辑和硬件通信等。由于涉及硬件操作,源码中可能还包括了DLL动态链接库文件,用于封装对硬件操作的API,使得C#程序能够直接调用这些API与硬件进行交互。 ES581模块作为一款常用的CAN通信模块,广泛应用于各种工业自动化、汽车电子以及智能控制领域。使用这种模块的好处是,开发者可以不必深入了解底层的硬件通信细节,而是通过标准的接口进行报文的收发,从而提高开发效率和可靠性。 整体来看,这份源码是针对需要进行CAN总线通信开发的工程师或技术人员的宝贵资源。它不仅可以作为学习C#和WPF编程的实践案例,同时也是深入理解和应用CAN通信协议的有用材料。开发者可以基于这份源码,进行二次开发或集成到自己的项目中,快速构建出具有CAN通信能力的软件应用。 ES581作为CAN模块进行报文收发/录制的C#WPF源码,不仅展示了如何通过高级编程语言与专业硬件模块进行交互,还提供了一个完整的工作流程,使得开发者可以更加快速、高效地实现复杂的CAN通信功能。这份源码对于需要在CAN通信领域进行软件开发的工程师来说,是一个难得的学习和参考资源。
2025-06-19 10:20:05 150KB
1
在Windows Presentation Foundation (WPF) 中,VisualStateGroups是一种强大的机制,它允许开发者在用户界面(UI)的不同状态之间切换,通常用于实现丰富的交互效果和动画。动态添加VisualStateGroups是提高程序灵活性的一种方法,尤其在复杂的UI设计中,可能需要在运行时根据应用逻辑或用户行为来调整状态管理。下面我们将深入探讨如何在XAML和C#代码中实现这一功能,以及它背后的原理和应用场景。 VisualStateGroups是VisualStateManager的一部分,它们包含了多个VisualState,每个VisualState代表了UI的一个特定状态。例如,一个按钮可能有"Normal"、"Hover"和"Pressed"三种状态,每种状态下按钮的外观和行为可能不同。VisualStateGroups允许我们将这些状态组织在一起,便于管理和切换。 在XAML中,我们通常会在UserControl或Window元素内定义VisualStateGroups,如下所示: ```xml ``` 但是,在某些情况下,我们可能需要在代码中动态地创建和添加VisualStateGroups。例如,当数据绑定到UI元素时,或者需要根据用户设置来决定显示哪些动画效果。这可以通过以下C#代码实现: ```csharp var visualStateManager = VisualStateManager.GetVisualStateGroups(this); if (visualStateManager == null) { visualStateManager = new VisualStateManager(); this.SetValue(VisualStateManager.VisualStateGroupsProperty, visualStateManager); } var stateGroup = new VisualStateGroup(); stateGroup.Name = "MyStateGroup"; var normalState = new VisualState(); normalState.Name = "Normal"; Storyboard normalStoryboard = new Storyboard(); // 添加动画到normalStoryboard... normalState.Storyboard = normalStoryboard; stateGroup.States.Add(normalState); // 添加更多状态... visualStateManager.AddVisualStateGroup(stateGroup); ``` 在这个例子中,我们首先获取当前控件的VisualStateManager,如果为空,则创建一个新的实例并设置到控件上。接着,我们创建一个VisualStateGroup,并添加多个VisualState。每个VisualState都包含一个Storyboard,用来定义状态切换时的动画效果。我们将新的VisualStateGroup添加到VisualStateManager中。 在实际项目中,你可能会遇到TestAnimation这样的测试场景,用于验证动态添加的VisualStateGroups是否正确工作。这可能涉及到创建各种状态,编写对应的Storyboard,然后通过VisualStateManager.GoToState方法触发状态切换,从而观察动画效果。 WPF中的动态添加VisualStateGroups动画是一项高级技巧,它使开发者能够更加灵活地控制UI的视觉表现,提升用户体验。在处理动态数据、响应用户事件或实现复杂交互时,这项技术显得尤为重要。通过熟练掌握这部分知识,开发者可以创建出更加生动、富有表现力的WPF应用程序。
2025-06-13 09:59:44 331KB wpf
1
在Windows Presentation Foundation (WPF) 中,开发人员可以利用丰富的动画功能来创建各种吸引人的用户界面效果,其中包括“窗体翻转”动画。这个效果类似于QQ启动窗口中的翻转效果,给用户带来一种动态和现代的视觉体验。下面将详细介绍如何在WPF中实现窗体翻转动画。 一、理解WPF动画基础 在WPF中,动画是通过Timeline类的子类(如Storyboard)来创建的。动画允许我们改变UI元素的属性,如位置、大小、颜色等,并且可以在指定的时间内平滑地进行这些变化。关键帧动画(KeyFrame Animation)和基于时间线的动画(Timeline-based Animation)是两种主要的动画类型。 二、实现窗体翻转效果 1. 使用VisualStateManager与ControlTemplate 我们需要定义一个ControlTemplate,其中包含两个状态:正常状态(Normal)和翻转状态(Flipped)。VisualStateManager会根据窗体的状态来选择显示哪个模板。例如: ```xml ``` 2. 添加动画到VisualState 在“Flipped”状态下,我们可以添加一个动画来改变窗体的Transform属性,实现翻转效果。这通常通过ScaleTransform或RotateTransform来完成。例如,使用ScaleTransform可以模拟3D翻转: ```xml ``` 3. 触发动画 为了触发这个翻转动画,我们需要在适当的时候更改VisualStateManager的状态。这可以通过代码-behind或者使用GoToStateAction来实现: ```csharp private void FlipButton_Click(object sender, RoutedEventArgs e) { VisualStateManager.GoToState(this, "Flipped", true); } ``` 三、实现类似QQ启动窗口效果 要实现类似QQ启动窗口的翻转效果,可能还需要考虑以下几点: - 窗体的背景和前景元素:确保在翻转过程中,前后两面的内容正确显示。 - 3D效果:可以使用PerspectiveTransform或ViewBox来增加立体感。 - 入场和出场动画:可能需要在翻转前后的过渡阶段添加额外的动画效果,如淡入淡出。 - 用户交互:确保用户可以控制翻转的方向和时机,比如通过点击按钮或鼠标悬停。 四、BeiLiNu.Ui.Controls库 压缩包中提到的"BeiLiNu.Ui.Controls"可能是一个自定义控件库,它可能已经封装了实现此类翻转动画的方法。使用这样的库可以简化开发过程,减少代码量,并提供预定义的样式和效果。如果这个库提供了相应的API,只需按照文档或示例代码调用相应方法即可实现窗体翻转效果。 总结,WPF中的窗体翻转动画是一种增强用户体验的优秀技术,通过VisualStateManager和动画可以轻松实现。同时,结合第三方库,如"BeiLiNu.Ui.Controls",可以更高效地构建出复杂的动画效果。
2025-06-13 09:59:04 6.58MB WPF窗体翻转 类似QQ窗口
1
本包cef125.0系列x64-H264版本发布包dll 此版本cef125最低支持.NET4.6.2,win10以上,chromium6422分支,cefsharp125.**系列 已测运行环境:WIN10,WIN11 压缩包里包含了文件使用说明的文档,因文档是已x64做为说明的,所以可用x86替换x64即可 x64:https://aka.ms/vs/16/release/VC_redist.x86.exe
2025-06-09 15:25:18 117.81MB h264 wpf chromium cefsharp
1
这是我资源的博客地址,可以先去博客看一下显示效果,以免浪费自己的时间。 https://mp.csdn.net/mp_blog/creation/editor/13178258 表盘的刻度分部,长刻度和短刻度显示。 在数值80W时,需要更改刻度盘的颜色渐变。 在数值80W时,更改库容总数背景的显示,也是颜色渐变。刻度盘控件属性定义 2025-06-09 15:03:47 186KB wpf
1
课程下载——C#+WPF上位机开发课程(模块化与反应式编程)
2025-06-04 23:19:33 221B wpf 课程资源 编程语言
1
图 3.6 带通滤波器 3.4.4 主放大和抬升电路设计 A/D 转换的输入电平要求为 0~3.3V,因此必须实现心电信号的高增益放大 800~1000 倍左右。前置电路放大了 10 倍,理论上主运放放大 100 倍左右即可。在本设计中采用两级放 大,第一级放大 10 倍,第二级通过 RJ 调节放大倍数,可调节最佳的增益输出,如图 3.7 所 示,采用的是反向比例放大电路。主运放芯片采用 OPA2604。 图 3.7 主放大电路 放大后的心电信号电压大概为-0.5V~1.5V,而 A/D 的输入范围为 0~3.3V,因此需要把 信号抬升,保证能采集到全部的心电信号。图 3.8 为差分输入放大电路,输入信号反向后与 正输入端的电压相加,正输入端的电压可以通过 P3 滑动变阻器进行调节。从而达到电平抬升 的目的。 图 3.8 电平抬升电路
2025-05-25 14:35:03 2.54MB STM32
1
主要实现数据库的类库创建、数据功能接口以及泛型方法实现。本例使用的数据库为 MySql数据库,ORM框架采用 SqlSugar 实现。博客链接:https://blog.csdn.net/qq_21419015/article/details/140661596 在本教程中,我们将深入探讨如何在WPF(Windows Presentation Foundation)项目中使用MVVM(Model-View-ViewModel)设计模式,并结合SqlSugar ORM(Object-Relational Mapping)框架以及MySql数据库,实现一个完整的数据库类库创建以及数据功能接口和泛型方法的实现。教程的目标是为初学者提供一个简洁明了的入门路径,帮助他们理解如何将这些技术集成到实际项目中,从而提高开发效率并保持代码的清晰和可维护性。 我们从数据库类库的创建开始。在本例中,我们选择使用MySql数据库,这是因为MySql是一个广泛使用的开源关系型数据库管理系统,它支持大型数据库,适用于多种操作系统,并且拥有一个庞大的开发者社区和丰富的文档资源。由于SqlSugar ORM框架的灵活性和易用性,它被选作我们的ORM工具,来简化数据访问层的操作。 接下来,我们将详细讨论如何实现数据功能接口。在MVVM架构中,功能接口扮演了非常重要的角色,它定义了数据访问层的操作标准,包括数据的增删改查等。通过定义接口,我们可以将业务逻辑层和数据访问层解耦,这有助于我们在不同的层之间实现更好的模块化,同时接口的使用也使得单元测试变得更加容易。 泛型方法的实现同样是本教程不可或缺的部分。泛型编程允许我们编写与数据类型无关的代码,这意味着我们可以创建一个方法,而不需要在编写代码的时候就确定数据的具体类型。在数据库操作中引入泛型方法,可以有效地减少代码的重复性,提高代码的复用性。使用泛型,我们能够创建出更加通用、灵活的数据访问类,这样无论是在开发新的应用还是在维护现有的项目时,都可以大大提升开发的效率。 此外,教程中还提供了一个博客链接,该链接详细描述了本例的实现过程,供读者深入了解和参考。博客地址为:https://blog.csdn.net/qq_21419015/article/details/140661596。通过阅读博客内容,学习者可以获得项目实例的详细说明,以及在实际开发过程中可能遇到的问题和解决方案。 为了更好地理解如何在WPF项目中应用MVVM模式和SqlSugar框架,我们还将探讨以下知识点: - WPF基础知识和MVVM模式的核心概念; - SqlSugar框架的安装和配置; - 设计数据库模型以及表结构; - 实现数据访问层的类库和方法; - 创建业务逻辑层以及如何与数据访问层交互; - 在ViewModel中处理数据的绑定和命令; - UI层的设计,以及如何将数据展示给用户; - 如何进行单元测试以及集成测试的策略; - 项目的构建和部署。 在学习过程中,读者应当掌握如何将理论知识应用到实际开发中,从而加深对WPF和MVVM模式的理解,并能够熟练使用SqlSugar框架进行数据库操作。教程的最终目的是帮助开发者构建一个结构合理、性能优良且易于维护的桌面应用程序。
2025-05-22 23:52:48 123.95MB wpf SqlSugar
1