WPF 绑定binding都有哪些事件
主要包含以下几个事件: 1. UpdateSourceTrigger:用于控制数据绑定如何更新源数据的事件PropertyChanged:每当目标属性的值更改时,将立即更新源属性。 LostFocus:当目标元素失去焦点时,更新源属性。 Explicit:只有在调用BindingExpression.UpdateSource方法时才会更新源属性。 Default:与绑定目标和属性的数据类型有关,通常是LostFocus或PropertyChanged事件。 Explicit和LostFocus是最常见的U
C#中await /async 的使用场景,优点,使用方法介绍
asyncawait 是 C# 中异步编程的关键特性,它使得异步代码编写更为简单和直观。下面深入详细描述了 asyncawait 的使用场景、优点以及一些高级使用方法,并提供了相应的实例源代码。 使用场景:IO 操作: 异步编程特别适用于涉及 IO 操作(如文件读写、网络请求等)的场景。在等待 IO 操作完成的过程中,CPU 可以继续执行其他任务,提高程序的并发性。 GUI 应用程序: 在 GUI 应用程序中,避免阻塞主线程是至关重要的。使用 asyncawait 可以确保在进行长时间运行的任务时,GUI
c# 高并发必备技巧(三)
前面两篇文章主要是介绍了如何解决高并发情况下资源争夺的问题。但是现实的应用场景中除了要解决资源争夺问题,高并发的情况还需要解决更多问题,比如快速处理业务数据等, 本篇文章简要罗列一下与之相关的更多技术细节。 1、异步编程:使用async和await关键字进行异步编程,这可以避免阻塞线程,提高程序的响应性和扩展性。异步编程可以通过Task或Task对象来实现。 public async Task ExampleAsync(){await Task.Run(() ={ 异步任务}) }2、多线程:使用多线程可
C#从字符串中提取固定步长的子字符串
C#从字符串中提取固定步长的子字符串 C#的Substring方法只能提取固定长度的子字符串,不能直接提取固定步长的子字符串。因此,我们需要自己编写一个方法来实现这个功能。 这个方法可以用于从字符串中提取固定步长的子字符串。例如,如果 str 是 "HelloWld",finger 是 2,step 是 3,那么返回的数组将是 ["llo" "rld"]。 注意: 最后的子字符串可能小于步长,这里是保留存入字符串数组中的。 例如,如果 str 是 "HelloWld",finger 是 0,step 是
chatgpt接口开发笔记3: 语音识别接口
chatgpt接口开发笔记3: 语音识别接口 1.文本转语音 1、了解接口参数 接口地址: POST https:api.openai.comv1audiospeech下面是接口文档描述内容:参数: { "model": "tts1" "input": "你好,我是饶坤,我是terramours gpt的开发者" "voice": "alloy" }model 模型 input 需要转换的文字 voice 语音风格2.postman测试3.结果:2.语音转文本 1、了解接口参数 接口地址: POST
渐进式web全栈:blazor web app
前言 本文要说的这种开发模式,这种模式并不是只有blaz支持,js中有一样的方案next.js nuxt.js;blaz还有很多其它内容,本文近关注渐进式开发模式。 是的,前后端是主流,不过以下情况也许前后端分离并不是最好的选择:小公司,人员不多,利润不高,创业阶段能省则省 个人开发者,接接私活,要么一个人全栈,累点;要么弄个小团队,各自分钱少点; 不确定项目能做到啥程度,希望快速上线看效果,效果好继续,效果不好拉倒 厌烦写js,又不得不做bs界面诸如此类,不分离开发更简单,更省成本。 渐进式 vue是渐
在.net中通过自定义LoggerProvider将日志保存到数据库方法(以mysql为例)
在.中,Microsoft.Extensions.Logging是一个灵活的日志库,它允许你将日志信息记录到各种不同的目标,包括数据库。在这个示例中,我将详细介绍如何使用Microsoft.Extensions.Logging将日志保存到MySQL数据库。我们将使用Entity Framewk Ce来与MySQL数据库进行交互。 步骤一:创建. Ce项目 首先,我们需要创建一个. Ce项目。你可以使用Visual Studio、Visual Studio Code或者命令行工具来创建项目。在创建项目时,确
将 .NET Aspire 部署到 Kubernetes 集群
使用Aspirate可以将Aspire程序部署到Kuberes 集群 工具安装 dot tool install g aspirate prerelease 注意:Aspirate 正在开发中,该软件包将作为预览版进行版本控制,prelease 选项将获得最新的预览版。 容器注册中心 您将构建为容器的 csproj 文件(项目)必须至少包含 ContainerRegistry,否则 sdk 将引发 CONTAINERS1013 错误。要解决这个问题,您可以根据需要添加它,或使用“init”命令。 in
Prometheus+Grafana 监控平台实践-搭建&常用服务监控&告警
前言Prometheus 是一个开放性的监控解决方案,通过各种 Expter 采集当前主机服务的数据,和 Grafana 相结合可以实现强大的监控和可视化功能 本篇将分享使用 docker compose 构建 Prometheus+Grafana,并监控之前文章所搭建的主机&服务,分享日常使用的一些使用经验 文章较长,已安装可略过,推荐先看第三节 常用服务的 Prometheus+Grafana 配置特点成熟稳定且强大 丰富的插件,大部分情况都能满足 轻量级部署,资源占用少使用情况主要用来作为监控面板使
第五单元 特殊视图
1. _Layout.cshtml 布局页 布局视图和我们在Asp. MVC一样,布局视图_Layout.cshtml使得所有视图保持一致的外观变得更加容易,因为我们只有一个要修改的布局视图文件,更改后将立即反映在整个应用程序的所有视图中。在 ASP. Ce MVC 中,有一些视图文件,如布局的视图,ViewStart.cshtml 和ViewImpts.cshtml 等其他.cshtml 文件的文件名以下划线开头,这些文件名中的前下划线表示这些文件不是直接面向浏览器。我们可以在单个应用程序中包含多个布局
Autofac高级应用,一个接口多个实现类如何注册到容器并获取实例
当使用Autofac处理一个接口有多个实现的情况时,通常会使用键(key)进行区分或者通过IIndex索引注入,也可以通过IEnumerable集合获取所有实例,以下是一个具体的例子,演示如何在Autofac中注册多个实现,并通过构造函数注入获取指定实现。 首先,确保你已经安装了Autofac NuGet包: InstallPackage Autofac 然后,我们看一个示例: using System using Autofac 定义接口 public interface IService {void
DevExpress 各版本破解方法
如果是首次安装Dev只需要下面两步流程就可以 第一步安装试用的最新版 Devexpress 22.2.4这步看直接去官网安装官方试用的就可以 第二步安装破解补丁关闭防火墙或360 然后打开 DevExpress.Universal.Patch 选择22.2 版本 和对应的visual studio 的版本.(如visual studio 2022 community 就选 2022 com.) 百度搜索 下载 DevExpress.Universal.Patch 破解工具。 如果电脑之前有安装
第四单元 视图与模型
create database MvcUnit4 go use MvcUnit4 go create table Product (Id bigint primary keyProductName var(30)CategyName var(30)Price decimal(102)Remark var(200)CreatedUserId bigintUpdatedUserId bigintCreatedTime datetimeUpdatedTime datetimed bit ) into Prod
C#中如何去掉字符串所有空格
在字符串操作中Trim方法只能去掉字符串对象前端和后端的空格,但是,如果空格出现在中间如何去除呢? 这里可以使用StringBuilder来操作字符串,StringBuilder操作字符串无疑是最为方便高效的。现在利用StringBuilder类中的Replace方法去掉字符串中所有的空格。 replace 替换 string str = "xy 2 3" StringBuilder sb = new StringBuilder(str) sb.Replace(" " "")第一个参数是被替换的字符,后
基于DotNetty实现自动发布
前言 上一篇我们实现了基于 Dotty 的通信基础模块的搭建本篇主要实现待发布 Web 项目的集成。 创建待发布项目为了测试 我创建了一个基于 . 4.8 的 Web 项目 OpenDeploy.TestWebProject我本机的代码仓储路径是: D:\Projects\Back\dot\Study\OpenDeploy.TestWebProject待发布项目集成 Git Git 是一个开源的分布式版本控制系统。我们使用它实现自动化检测需要发布的文件。我把这个测试的 Web 项目托管在了 Gitee 仓
第三单元 管道与中间件
1. 什么是中间件在ASP. Ce中,中间件(dleware)是一个可以处理HTTP请求或响应的软件管道。 ASP. Ce中给中间件组件的定位是具有非常特定的用途。例如,我们可能有需要一个中间件组件验证用户,另一个中间件来处理错误,另一个中间件来提供静态文件,如Javript文件,CSS文件,图片等等。 中间件就是用于组成应用程序管道来处理请求和响应的组件 。 中间件可以认为有两个基本的职责:选择是否将请求传递给管道中的下一个中间件。可以在管道中的下一个中间件前后执行一些工作。我们使用这些中间件组件在AS
记一次 .NET 某零售管理系统 存储不足分析
一:背景 1. 讲故事 前几天有位朋友找到我,说他的程序会偶发性的报 存储空间不足,无法处理此命令 的错误,让我帮忙看下到底怎么回事,哈哈,人家是有备而来,dump都准备好了,话不多说,直接分析开干。 二:WinDbg 分析 1. 捕获dump中的异常 一般来讲别人说的只是一个参考,我们需要自己到dump中去验证,可以用 !t 观察下。0:000:x86 !t ThreadCount: 61 UnstartedThread: 0 BackgroundThread: 52 PendingThre
WPF应用框架中工作流模块的介绍
在前面的随笔,我对我们开发的审批工作流做了不少的介绍,其中有包括WInfm的、Vue+Element、Bootstrap Asp.的,在各个框架上,我们都尽量争取界面能够一致化,以便客户能够在不同的前端上有相同的用户体验,并结合不同的前端特点,做了一些优化处理,本篇随笔对WPF应用框架中工作流模块进行介绍。 1、回顾工作流的介绍内容 审批工作流的概念我们先来回顾一下。 在工作流处理表中,首先我们区分流程模板和流程实例两个部分,这个其实就是类似模板和具体文档的概念,我们一份模板可以创建很多个类似的文档,文档
.net下优秀的日志框架Serilog,你用上了吗?强烈推荐
在 . 开发中,Serilog 是一款广受欢迎的日志库,它提供了强大的日志记录功能,具有丰富的特性和高度的可扩展性。Serilog 的优秀之处包括:可扩展性: Serilog 可以轻松扩展以满足不同的日志记录需求,例如日志存储、格式化和过滤。它支持各种插件和自定义扩展,让你可以根据项目的具体要求定制日志记录功能。 结构化日志: Serilog 支持结构化日志,允许你以键值对的形式记录信息,这使得日志数据更容易分析和查询。这对于在日志中存储复杂的数据非常有用。 异步日志记录: Serilog 可以异步记录日
第二单元 Http 概述
1. CS 与 BS CS结构系统是什么 ClientServer结构(CS结构)是大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销 BS结构系统是什么 BS结构(BrowserServer,浏览器服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安
第一单元 Mvc概述
1. 什么是Mvc模型视图控制器 (MVC) 体系结构模式将应用程序分成 3 个主要组件组:视图模型、视图和控制器。 此模式有助于实现关注点分离。 使用此模式,用户请求被路由到控制器,后者负责使用模型来执行用户操作和或检索查询结果。 控制器选择要显示给用户的视图,并为其提供所需的任何模型数据。 下图显示 3 个主要组件及其相互引用关系: 这种责任划分有助于根据复杂性缩放应用程序,因为这更易于编码、调试和测试包含单一作业的某个组成部分(模型、视图或控制器)。 但这会加大更新、测试和调试代码的难度,该代码在
不要用第三方日志包了Microsoft.Extensions.Logging功能就很强大
在.中,Microsoft.Extensions.Logging是一个广泛使用的日志库,用于记录应用程序的日志信息。它提供了丰富的功能和灵活性,使开发人员能够轻松地记录各种类型的日志,并将其输出到不同的目标,包括日志文件。本文将详细介绍Microsoft.Extensions.Logging的各种基础功能以及如何按天生成日志文件。 一、Microsoft.Extensions.Logging基础功能 1. 创建Logger 首先,我们需要创建一个Logger实例,以便在应用程序中记录日志。以下是创建Log
Prism使用Options选项
Options是微软提供的选项模块,该模块依赖于容器使用。除了微软的IServiceCollection,当然也可以使用其它的依赖注入容器。本文演示如何在prism中使用Options。 创建应用项目 创建一个Avalonia应用(或其它类型应用),然后使用NuGet包管理器添加Prism.DryIoc.Avalonia包。创建Views和ViewModels文件夹,将MainWindow移动到Views文件夹中(注意修改namespace),在ViewModels文件夹中创建MainWindowView
每个.NET开发都应掌握的C#处理文件系统I/O知识点
上篇文章讲述了C#多线程知识点,本文将介绍C#处理文件的知识点。在.开发领域,文件系统IO是一个至关重要的主题,尤其是在处理文件、目录和数据存储方面。C#作为.平台的主要编程语言,提供了丰富而强大的文件系统IO功能,为开发人员提供了灵活的工具,使其能够高效地处理文件操作。本文将介绍C#处理文件系统IO知识点。 1、文件和目录的创建与删除 在C#中,使用`File`和`Directy`类可以轻松地创建和删除文件及目录。开发者应了解如何使用这两个类的方法。 案例如下: 创建文件 File.Create("p
WPF DataGrid开箱即用支持全部勾选的DataGridCheckBoxColumn
本文由 飞羽流星(Flith毛茸茸松鼠先生Mr.Squirrel.Downy)原创欢迎分享转载但禁止以原创二次发布 原文地址:https:www.cnblogs.comFlithp17877473.html 以往在WPF的DataGrid上实现实时勾选交互非常麻烦要用DataGridTemplateColumn写样式还要写一些后端代码,还有绑定和转换器,或者处理事件。 但是现在都不需要了,使用开箱即用的DataGridCheckAllColumn,简化你的勾选代码实现! 它支持列表筛选变化反馈,支持虚拟化
在CPF里使用OpenGL做跨平台桌面应用开发
CPF 是开源的C#跨平台UI框架,支持使用OpenGL来渲染,可以用来硬件加速播放视频或者显示3D模型 实现原理其实就是Skia用OpenGL后端,Skia里绑定GLView的OpenGL纹理,将纹理作为Skia的图像混合绘制。 在CPF里使用OpenGL,不能选择Ce3.0和4,需要选择ce3.1以及之后的版本。 Nuget里安装最新版的CPF。另外安装Silk.或者OpenTK来调用OpenGL绘制。 Program里需要开启GPU,设置 UseGPU = trueclass Program{[ST
.net平台使用SDK快速对接各大语言模型
.平台使用SDK快速对接各大语言模型 1.项目介绍 最近,在做GPT项目时,发现各个平台的接口规范和参数不同,需要根据不同平台和模型写多种接口,比较麻烦,不想Python那样有丰富和方便的AI环境, 如果c#有一个SDK可以方便调用各种平台模型就好了,这是AllInAI.Sharp.API萌芽的起源。 于是我开发了这个SDK,包名:[AllInAI.Sharp.API](https:github.comraokunAllInAI.Sharp.API.Sample)。 AllInAI.Sharp.API一款
在WPF应用中使用GongSolutions.WPF.DragDrop实现列表集合控件的拖动处理
WPF应用中,控件本身也可以通过实现事件代码实现拖动的处理,不过如果我们使用GongSolutions.WPF.Drag来处理,事情会变得更加简单轻松,它支持很多控件的拖动处理,如ListBox ListView TreeView DataGrid等源自ItemsControl的控件,本篇随笔介绍在工作流模块中拖动TreeView和DataGrid列表实现流程顺序的调整处理。 1、使用GongSolutions.WPF.Drag 控件的GitHub地址:https:github.compunker76go
Power BI Report Server自定义Form登录
一、条件1、windows server主机一台,我是windows server 2019(当然windows10或者10月份5日更新的windows11也是可以行的)。 2、SQL Sever,我用的是SQL Server2019。3、Power BI Rept Server默认位置安装(默认位置:C:\Program Files\Microsoft Power BI Rept Server)。4、Fm自定义登录demo文件,见文末现在文件,源文件在GitHub上,链接:https:github.co
.net通过Action进行Options参数的传递,你知道是怎么实现的吗?
在. Ce中,使用Action和Options参数方式配置服务并将配置信息对象注册到IServiceCollection的好处在于,它提供了更高级别的可配置性和可扩展性。这种模式允许将配置信息与服务的实现分离,使配置更加模块化和可管理。通过将配置信息对象注册到IServiceCollection,可以轻松将其注入到需要的服务中,从而使配置信息对整个应用程序都可用。以下是如何配置邮件发送服务并将配置信息对象注册到IServiceCollection的示例: 首先,让我们创建一个配置信息对象 EmailSer