wpf专题

用Microsoft.Extensions.Hosting 管理WPF项目.

首先引入必要的包: <ItemGroup><PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" /><PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" /><PackageReference Include="Serilog

C# 唯一性进程的方法封装(Winform/WPF通用)

C#唯一进程封装 C# 唯一性进程的方法封装 public class UniqueProcess{/// <summary>/// 焦点切换指定的窗口,并将其带到前台/// </summary>/// <param name="hWnd"></param>/// <param name="fAltTab"></param>[DllImport("user32.dll")]public st

WPF在MVVM模式下 ViewModel通讯

一、遇到问题       一般情况下我们可能会遇到当一个界面上的数据显示发生变化,可能通知其他界面,让其他界面上的数据或显示也发生变化。通常包括以下几种情况:  1.主界面通知子界面  2.子界面通知主界面  3.子界面通知子界面 二、实现方案      1.方案1       很容易想到的方案是:在一个ViewModel(vm1)中定义一个事件,然后另一个ViewModel(v

WPF 绑定中Converter的应用

在WPF 经常用到绑定,如果绑定的源数据和目标属性是同类型的则不需要转换。比如 <TextBox x:Name="txt1" Background="Blue" Text="测试"/><TextBox Background="{Binding ElementName=txt1,Path=Background}" Grid.Column="1"/>如果是不同类型的数据我们要

WPF 利用Process.Start()方法启动指定路径下的exe文件并传递参数

简单来说就是实现一个程序A 打开程序B,并且在打开的时候传递一些参数给B,最后在B窗口上显示出参数,这个小功能也是折腾了我半天。现在把我的过程整理记录下来。 1.首先我们得有一个被调用的程序,新建一个简单的WPF程序,命名为:argTest。里面加一个label,用来显示接收到的参数。直接运行该程序如下: 2.新建一个WPF程序用来启动我们的argTest.exe程序,命名为call。添加窗体

WPF——Binding

一、作用 将Window GUI的运行机理从 “事件驱动” 转变为 “数据驱动”。将UI界面与业务逻辑解耦,使得改动一个而无需改动另一个。数据逻辑层自成体系,使得无需借助UI也可进行单元测试。 二、基础 1. Binding=源+模板 Binding包括源与目标,源通常为逻辑层的类对象属性,目标通常为展示层的控件属性。 那么,如何让类对象属性成为绑定源呢?通过类对象实现INotice

WPF文本框中加提示语

效果: WPF中貌似不能像winfrom里一样直接加提示语,需要使用TextBox.Style,将Trigger标签插入进去。 贴源码: <WrapPanel Name="TakeOverExpressNo1"><Label Content="物流单号:"></Label><TextBox Grid.Row="9" Grid.Column="1" x:Name="txtTakeOverExpr

WPF文本绑定显示格式StringFormat设置-数值类型处理

绑定显示格式设置 在Textblock等文本控件中,我们经常要绑定一些数据类型,但是我们希望显示的时候能够按照我们想要的格式去显示,比如增加文本前缀,后面加单位,显示百分号等等,这种就需要对绑定格式进行处理 <TextBlock HorizontalAlignment="Left" Margin="119,42,0,0" TextWrapping="Wrap" Text="{Binding V

WPF由文本框输入的内容动态渲染下拉框

在做项目过程中,需要扫码枪扫描快递单号或者手动输入快递单号时,自动检索该单号是哪个快递公司的,下拉框中自动带出该单号的快递公司。当输入的快递单号不存在时,将数据库中所有快递公司都带出 效果: 通过输入的快递单号检索快递公司 1、物流单号文本框需要添加KeyDown回车事件 <TextBox Grid.Row="9" Grid.Column="1" x:Name="txtRe

WPF文本绑定显示格式StringFormat设置-特殊格式时间日期和多数据绑定

WPF文本绑定显示格式StringFormat设置 特殊格式设置日期/时间使用系统默认样式自定义格式: 绑定多个属性(多重绑定)多重绑定中的特殊字符示例: 特殊格式设置 在Textblock等文本控件中,我们经常要显示一些日期和时间,默认显示的日期,不是我们想要的,所以需要自定义格式,还有多个数据可能需要绑定到一个文本中,都可以通过设置StringFormat来实现 日期/时

WPF 一个执行耗时任务,页面更新等待时间的例子

xaml页面,一个按钮,一个lable,lable用来更新等待的时间。点击按钮,每过1秒,label的数值+1,直到任务结束。 <Window x:Class="WpfApp2.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.

Net开源项目推荐-WPF控件样式篇

Net开源项目推荐-WPF控件样式篇 HandyControlWPFDeveloperswpf-uidesignLive-ChartsAvalonDock HandyControl WPF控件库,比较常用的WPF开源控件库,对WPF原有控件样式都进行了重写和扩展,也增加了许多特别的控件,非常好用 github仓库: https://github.com/HandyOrg/Han

WPF Text=“{Binding AdornedElement.(Validation.Errors)[0].ErrorContent 报绑定错误

WPF  Text="{Binding AdornedElement.(Validation.Errors)[0].ErrorContent 报绑定错误 完整报错信息如下:System.Windows.Data Error: 17 : Cannot get 'Item[]' value (type 'ValidationError') from '(Validation.Errors)'(typ

示例:WPF中使用IsAsync的方式绑定数据来优化用户体验

一、目的:开发过程中,有时需要绑定大量数据,比如弹出一个窗口,窗口中包含一个ListBox绑定了大量数据,这时会出现点击按钮后出现假死卡顿影响用户体验,这理通过用IsAsync的方式将窗口优先弹出来再加载数据 二、演示 在未使用IsAsync绑定的效果 可以看到,点击按钮时卡了一会才弹出窗口显示数据,代码如下  首先,生成10000条数据 internal class M

【WPF编程宝典】第10讲:简单动画

1.基本动画 这些基本动画都应用与C#代码动画是WPF模型的核心部分,让动画动起来不需要使用计时器以及事件处理代码,可使用声明的方式创建动画。WPF动画第一条规则,每个动画都依赖于一个依赖项属性。WPF动画第二条规则,属性的动态化需要有支持相应数据类型的动画类。比如按钮的宽度是双精度类型,需要DoubleAnimation,按钮的Padding是Thickness结构,需要Thickness

示例:WPF中如何绑定ContextMenu和Menu

一、目的:开发过程中,有些模块的右键ContextMenu菜单是需要动态显示的,既是根据不同条件显示不同的菜单,很多是通过代码去生成ContextMenu的MenuItem,本文介绍通过绑定的方式去加载ContextMenu,Menu菜单栏的同样适用,原理同TreeView的绑定 二、效果 三、环境 VS2022 四、实现 实现代码 <TextBlock T

wpfui:一个开源免费具有现代化设计趋势的WPF控件库

wpfui介绍 wpfui是一款开源免费(MIT协议)具有现代化设计趋势的WPF界面库。wpfui为wpf的界面开发提供了流畅的体验,提供了一个简单的方法,让使用WPF编写的应用程序跟上现代设计趋势。截止写这篇文章,该项目获得了6.7k starts。 最近我也在使用wpfui,整体使用下来感觉非常不错,因此想写一篇文章介绍一下wpfui。 wpfui项目概览 将该项目fork一份

WPF Prism框架搭建

WPF Prism框架搭建 1.引入Prism框架 在Nuget包管理器中搜索Prism,并添加到项目中 2.在项目中使用prism框架 2.1 修改app.xaml 删除项目中自带的StartupUri 修改Application节点为prism:PrismApplication 引入prism命名空间 <prism:PrismApplication x:Class=

C#唯一进程的处理Winform/WPF

C#唯一进程的处理 1.使用进程(Process)判断winformWPF执行效果: 2.使用互斥体(Metux)实现winformWPF实现效果: 在C#客户端(Winform/WPF)开发过程中,有的情况需要确保程序的唯一性,如果启动同时启动同一个程序多次,可能导致数据,通信等异常。下面有两种方法来实现唯一进程 1.使用进程(Process)判断 需要引入SwitchTo

示例:WPF中在没有MouseDoubleClick的控件中如何识别双击

一、目的:由于MouseDoubleClick控件是在Control中实现,那么在底层控件如Grid中想要类似功能如何实现,这里通过MouseDown的事MouseButtonEventArgs参数去实现 二、实现 定义Grid并注册Grid的MouseDown事件 <Grid Background="Transparent" MouseDown="Grid_MouseDown"><Tex

示例:WPF中应用Grid的SharedSizeGroup设置整齐的布局

一、目的:应用Grid的SharedSizeGroup设置整齐的布局 二、实现 <ItemsControl ItemsSource="{local:GetStudents Count=5}"><ItemsControl.ItemTemplate><DataTemplate><Grid ShowGridLines="True"><Grid.ColumnDefinitions><ColumnD

示例:WPF中TreeView自定义TreeNode泛型绑定对象

一、目的:在开发中经常需要绑定TreeView,所以定义了一个泛型的TreeNode<T>用来方便绑定对象和复用 二、实现 public partial class TreeNodeBase<T> : SelectBindable<T>, ITreeNode{public TreeNodeBase(T t) : base(t){}private ObservableCollectio

WPF学习(4)--SCICHART学习

一、项目创建过程 1.下载SCICHART插件 2.选中第一个,确保引用中有我们要用的 二、示例代码 1.前端代码 <Window x:Class="SciChart.Examples.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://sche

WPF 上位机 Modbus 入门必备的信息 C# 开发对接

关于Modbus协议 Modbus协议是MODICON(莫迪康)(现施耐德品牌)在1979年开发的,是全球第一个真正用于现场的总线协议; Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,可以实现控制器相互之间、控制器经由网络和其实设备之间的通 信。 Modbus特点 协议标准 设备无关 -标准开放、公开发表、无版税要求、无许可证费(没有费用) -支持多种电气接口(RS232、RS4

基于WPF技术的换热站智能监控系统16--动态数据绑定

1、实现思路 1)实时读取到的数据绑定到前台UI控件上,这个通过MVVM模式实现,同时注意实时读取必须通过任务task异步方式,这就需要读取PLC数据。 2)UI控件的动作,如开或关水泵,必定能够将值写入PLC,这就需要写入PLC数据,此时当上面1的任务执行时,又获取到了新的实时数据,从而改变UI控件 注意: 默认启动程序后,就主动读取PLC数据,启动成功后,可以关闭某个水泵 2、开搞

示例:WPF中TreeView自定义TreeNode泛型绑定对象来实现级联勾选

一、目的:在绑定TreeView的功能中经常会遇到需要在树节点前增加勾选CheckBox框,勾选本节点的同时也要同步显示父节点和子节点状态 二、实现 三、环境 VS2022 四、示例 定义如下节点类 public partial class TreeNodeBase<T> : SelectBindable<T>, ITreeNode{public TreeNodeBa