随笔分类 - WPF
WPF开发
摘要:在 WPF 中,DataGrid 默认情况下行高是固定的。如果要实现 DataGrid 的行高自适应(根据行中内容动态调整行高),可以通过 LayoutUpdated 事件实现。 <Grid Margin="15,10"> <Grid.RowDefinitions> <RowDefinition H
阅读全文
摘要:在 .NET 6 和更高版本中,C# 引入了一个新功能叫作 "global using directives",它允许我们在一个地方定义全局可用的 using 指令,而不必在每个文件中重复。然而,有时候我们可能希望在某些文件中禁用特定的全局 using 指令。 我在基于 .Net 8 的 WPF 项
阅读全文
摘要:1、问题场景 WPF使用Prism.WPF、Prism.Unity组件之后,使用IOC方法创建主窗口(MainWindow): protected override Window CreateShell() { return Container.Resolve<MainWindow>(); } 在主
阅读全文
摘要:将枚举型的数据类型绑定到单选按钮的IsChecked属性中,可以避免定义多个bool类型与之进行绑定,尤其是枚举类型较多时候,对bool对象的维护会更加复杂。 1、定义枚举类型及值转换器 internal enum Gender { [Description("男")] Male, [Descrip
阅读全文
摘要:在WPF中可以使用LibVLCSharp.WPF、Vlc.DotNet.Wpf组件直接播放RTSP流,此外还可以通过LibVLCSharp + SkiaSharp的方式将VLC视频流通过WriteableBitmap的方式关联到Image对象。 1、LibVLCSharp.WPF 使用VideoVi
阅读全文
摘要:/// <summary> /// 保存控件到图片 /// </summary> /// <param name="element">控件对象</param> /// <param name="fileName">文件名</param> /// <param name="dpi">DPI</para
阅读全文
摘要:1、问题描述 DataGrid列表中添加删除按钮,点击后执行下述操作: ModelList.Remove(item); 这时候会有XAML绑定失败错误: 严重性 计数 数据上下文 绑定路径 目标 目标类型 说明 文件 行 项目 错误 12 null SelectionUnit DataGridCel
阅读全文
摘要:在WPF中实现区域拖动的思路主要是,对鼠标按下、弹起、移动事件进行处理:鼠标按下时标记为可以移动并记录初始位置信息,鼠标弹起时标记不可以移动,鼠标移动过程中如果界面元素可以移动就动态设置相关位置。具体而言,需要处理的事件为:PreviewMouseLeftButtonDown、PreviewMous
阅读全文
摘要:WPF可通过引用System.Windows.Forms来使用Screen.AllScreens获取屏幕信息,但是Screen.AllScreens获取的屏幕信息和物理屏幕有关,在Windows系统设置多屏幕之后会获取意想不到的屏幕位置,导致出现错误。下面先讲述如何引用System.Windows.
阅读全文
摘要:1、TextBlock 文本截断 TextTrimming="CharacterEllipsis" 换行显示、允许输入回车键 TextWrapping="Wrap" AcceptsReturn="True" 提示绑定文本 ToolTip="{Binding Path=Text, RelativeSo
阅读全文
摘要:最近在做动态刷新COM串口列表的小功能,发现在UI线程异步处理ComboBox数据源后,UI无法即时刷新的问题。调试代码发现数据源是改变了的,但是无意中使用另外一种方式却能够有很好的效果,原因暂时未知。 问题解决方法:使用SelectedIndex代替SelectedValue,参考《I cant
阅读全文
摘要:本文开发环境为VS2019+.Net5(.Net Core),使用VS发布项目在目标操作系统中运行,目标运行时为win-x86,发布配置不再赘述,直接记录在x86和x64环境的Win7系统中运行WPF程序的步骤。 一、独立部署模式 1、32位Win7 (1) 安装SP1更新包 windows6.1-
阅读全文
摘要:UIElement.IsHitTestVisible属性可以设置WPF元素是否响应点击等交互事件,利用该属性可实现禁止选中DataGrid行的效果。 参考资料:禁用在WPF DataGrid中的选择 方法1:屏蔽DataGrid点击效果 该方法禁用了DataGrid所有交互事件,包含行滚动。 <Da
阅读全文
摘要:WPF中通过System.Windows.Forms.Application.Restart方法可以实现软件重启,处理好重启条件就能实现预期的重启效果。 重启条件可以存储在Properties.Settings中,也可以存在于xml等配置文件中,甚至可以存在于SQLite等数据库中,在需要重启的时候
阅读全文
摘要:本文在MVVM模式先实现了基于HandyControl的DataGrid多选,同时展示了为DataGrid单元格显示不同颜色的方法,开发环境为:WPF + Prism + HandyControl。 1、添加多选列 <DataGridTemplateColumn Width="Auto"> <Dat
阅读全文
摘要:本文背景:在使用Prism框架的WPF中,直接为ContentControl设置Background不起作用。 参考资料:ContentControl in ControlTemplate does not show Border nor Background。 1、问题原因 ContentCont
阅读全文
摘要:本文环境为.Net5 + WPF + Prism + Unity + SuperSocket 2.0.0-beta.10,介绍了在WPF中如何对SuperSocket 2.0进行依赖注入的方法。 至于如何在WPF中集成SuperSocket 2.0,参考“在WPF中集成SuperSocket 2.0
阅读全文
摘要:本文在.Net5环境下,在WPF项目中集成SuperSocket(V2.0.0-beta.10),以便使WPF程序拥有Socket服务器能力。 本文假设读者具有在.Net5控制台程序中使用SuperSocket 2.0的能力,因此服务器相关设置不再介绍。 1、创建托管服务器主机 参考在.Net5控制
阅读全文
摘要:本文使用PrintDialog. PrintVisual方法进行打印,参考“在WPF中使用PrintDialog.PrintVisual方法进行打印”。 1、A4纸的分辨率 本节文字摘录于“打印A4纸图片需要多少像素和分辨率?”,算是相关介绍里比较早的一篇文章了。 一般来说,给铜版纸使用的300dp
阅读全文
摘要:1、概述 使用PrintDialog. PrintVisual方法进行打印时,只需要提供WPF中的可视元素类型对象即可,比如UserControl或者Window。这种打印方法的好处是所见即所得,WPF会以图像的方式将其打印出来。此外,还可以通过数据绑定的方式进行动态数据打印。 2、注意事项 (1)
阅读全文