本文记录WPF在dotnet9的一项XAML编写语法改进点,此改进点用于解决编写Style的Setter进行给Value赋值时,不能将Value当成默认内容,需要多写Value标签的问题。通过此改进点可减少两行XAML代码 在原先的WPF版本里面,对Style的Setter填充复杂的对象内容时,大概的示例代码如下 <StyleTargetType="Button"> <SetterProperty="Template"> <Setter.Value> <ControlTemplateTargetType="Button"> ... </Co...

  gKJ2xtp6I8Y7   2天前   6   0   0 .NET

本文来告诉大家在WPF中,设置窗口全屏化的一个稳定的设置方法。在设置窗口全屏的时候,经常遇到的问题就是应用程序虽然设置最大化加无边框,但是此方式经常会有任务栏冒出来,或者说窗口没有贴屏幕的边。本文的方法是基于Win32的,由lsj提供的方法,当前已在1000多万台设备上稳定运行超过三年时间,只有很少的电脑才偶尔出现任务栏不消失的情况 本文的方法核心方式是通过Hook的方式获取当前窗口的Win32消息,在消息里面获取显示器信息,根据获取显示器信息来设置窗口的尺寸和左上角的值。可以支持在全屏,多屏的设备上稳定设置全屏。支持在全屏之后,窗口可通过API方式(也可以用Win+Shift+Left/Ri...

  gKJ2xtp6I8Y7   2天前   6   0   0 .NET

本文记录我阅读Avalonia代码过程中所学习到的在X11的窗口之间发送鼠标消息,可以跨进程给其他进程的窗口发送鼠标消息,通过此方式可以实现模拟鼠标输入 直接使用XSendEvent给指定窗口发送消息即可,如以下示例代码 varxEvent=newXEvent { MotionEvent= { type=XEventName.MotionNotify, send_event=true, window=Window, display=Display, x=x, y=y } }; XSendEvent(Display,Window,propagate:false,newIntPtr((int)(E...

  gKJ2xtp6I8Y7   2天前   3   0   0 .NET

在X11里面有和Win32类似的窗口之间的关系机制,如Owner-Owned关系,以及Parent-Child关系。本文将告诉大家如何进行设置以及其行为 本文将大量使用到newbing提供的回答内容,感谢newbing人工智能提供的内容 Owner-Owned关系 在这种关系中,一个窗口可以被另一个窗口拥有(owner)。 被拥有的窗口永远显示在拥有它的那个窗口的前面。 当所有者窗口最小化时,它所拥有的窗口也会被隐藏。 当所有者窗口被销毁时,它所拥有的窗口也会被销毁。 当子窗口最小化时,不会影响到所有者窗口 子窗口可以超过所有者窗口的范围 被拥有的窗口=子窗口 所有者窗口=“在拥有它的那个...

  gKJ2xtp6I8Y7   2天前   3   0   0 .NET

本文将告诉大家一个在ZipArchive里追加文件夹,以及添加过滤文件处理的压缩文件辅助方法 实现的方法的代码如下 ///<summary> ///追加文件夹到压缩文件里面 ///</summary> ///<paramname="archive"></param> ///<paramname="sourceDirectoryName"></param> ///<paramname="zipRelativePath">在压缩包里面的相对路径</param> ///<paramname="com...

  gKJ2xtp6I8Y7   20天前   25   0   0 .NET

本文将从控制台开始,告诉大家一个非常简单的WPF基础绘图方法,通过本文的方法可以调用WPF上层人类友好的方法,充分利用GPU资源,创建或加工图片,最终结果可以输出到本地文件,可支持编码出多种不同的图片格式 本文仅用到WPF的多媒体渲染层,在WPF的这一层上的API是人类友好的,直接咱使用的是就是熟悉的DrawingContext类型。通过DrawingContext进行画线、画矩形、画几何、画图片、画文字,进行裁剪、变换、加特效等等,即可绘制出绚酷的界面效果。经由RenderTargetBitmap和BitmapEncoder即可将界面编码为图片输出到文件里面 从本质上讲,本文的方法里面只是将...

  gKJ2xtp6I8Y7   23天前   19   0   0 .NET

从设计架构上,无论是WPF还是ASP.NETCore框架,都是在dotnet运行时上层的应用,两个框架处于平级的结构。理论上讲,两个平级的框架只要不存在特殊的情况,都是能够相容存在的。本文将和大家介绍一个非常简单的方法,在一个进程内同时跑起WPF和ASP.NETCore框架 在一个进程内同时跑起WPF和ASP.NETCore框架在一些业务情况下还是一个不错的选择。比如以ASP.NETCore框架为主,让WPF作为状态展示的界面。比如以WPF为主,让ASP.NETCore框架充当应用对外接口,比如多应用之间的通讯等。更多的用法还请发挥你的想象力 只有将WPF更新到使用dotnetcore版本(包...

  gKJ2xtp6I8Y7   23天前   28   0   0 .NET

本文将分享我在dotnet里面使用Direct2D配合AOT开发一个简单的测试应用的经验。这是我用不到370行代码,从零开始控制台创建Win32窗口,再挂上交换链,在窗口上使用D2D绘制界面内容,最后使用AOT方式发布的测试应用。成品文件体积不超过10MB且运行内存稳定在60MB以内,满帧率运行但CPU近乎不动 此测试应用通过Win32裸窗口创建方式创建窗口且开启窗口消息循环。使用Direct2D进行界面绘制,可以比较方便绘制出复杂且绚丽的界面,整体使用类似于直接使用WPF的DrawingContext绘制界面内容。整体应用只依赖D2D绘制界面以及一点点Win32函数用来创建窗口,除此之外没有...

  gKJ2xtp6I8Y7   23天前   19   0   0 .NET

本文将详细指导大家如何逐步为dotnet系列应用创建满足UOS统信系统软件安装包的要求。在这里,我们所说的dotnet系列应用是指那些能够在Linux平台上构建UI框架的应用,包括但不限于CPF应用、UNO应用、Avalonia应用等 基于dotnet系的自发布自包含的能力,可以将dotnet系的应用进行发布为独立应用,无需框架依赖,如此即可执行deb包的二进制打包过程,从而很方便对接上UOS统信系统软件安装包的要求 整体步骤可以分为三个大步骤: 步骤一:发布应用 步骤二:组织文件结构 步骤三:打包deb文件 本文接下来将按照步骤顺序一步步告诉大家如何在Windows上为dotnet系的应...

  gKJ2xtp6I8Y7   23天前   16   0   0 .NET

以往的单元测试都是不能单独作为一个独立的可执行文件跑的,需要在VisualStudio或VSTest或dotnettest里面运行。这就限制了运行单元测试的环境了,有时候开发者可能期望在无SDK或开发环境下执行单元测试,这时就可以用到本文介绍的MSTestRunner功能,将单元测试制作为独立可执行文件 将单元测试制作为可执行文件,运行此可执行文件即可运行单元测试。可执行文件可以作为独立框架发布的方式,如此可以在一些纯净的环境里面运行,或者是将单元测试打包分发给测试同事,请测试同事在大批量的设备上进行执行。如此可见,将单元测试制作为可执行文件在许多地方都有用武之地,如: 在纯净系统环境运行 ...

  gKJ2xtp6I8Y7   23天前   34   0   0 软件测试

本文将告诉大家如何在WPF或者其他Win32应用里面,在收到鼠标消息时,通过GetMessageExtraInfo方法获取当前收到的鼠标消息是否由触摸消息提升而来 大家都知道,在不开启WM_Pointer的情况下,无论是走WM_Touch或者是RealTimeStylus等方式,默认下触摸都会提升为鼠标消息从而更好兼容应用程序的逻辑 如果此时应用程序想要根据消息循环里面接收到的Win32消息判断一个鼠标消息的来源是否来自于触摸框触摸屏或者是Pen笔等,可以通过GetMessageExtraInfo方法获取更多的信息 根据GetMessageExtraInfo方法获取到的LPARAM进行Mask...

  gKJ2xtp6I8Y7   24天前   24   0   0 .NET

我在一个WPF项目里面,在界面显示应用的版本号,更新到dotnet8的SDK之后,发现我的界面布局损坏了。本质上这个破坏性改动和WPF没有什么关系,是dotnet的SDK或编译器的破坏性变更,在AssemblyInformationalVersionAttribute的InformationalVersion属性里面写入了当前的git的commit提交号 咱可以非常方便写出代码获取到当前应用的版本号信息,如下面代码,我新建了一个简单的WPF界面用来显示当前应用的版本号 <Grid> <TextBlockHorizontalAlignment="Center"VerticalA...

  gKJ2xtp6I8Y7   24天前   24   0   0 .NET

本文记录的是在Windows系统里面,使用VisualStudio2022远程调试运行在UOS里面dotnet应用的配置方法 本文写于2024.03.19如果你阅读本文的时间距离本文编写的时间过于长,那本文可能包含过期的知识 我将以我的UOS虚拟机作为例子告诉大家如何在Windows系统里面,使用VisualStudio2022远程调试运行在UOS里面dotnet应用。这里的dotnet应用不仅包含纯控制台即可实现的ASP.NETCore也包括带GUI的程序,包括CPF、UNO/MAUI、Avalonia等UI框架上构建的可运行在UOSLinux系统上的应用 准备 第一步是保证UOS和Wind...

  gKJ2xtp6I8Y7   24天前   21   0   0 .NET

本文将和大家推荐我团队开源的LightWorkFlowManager轻量的工作过程管理库,适合任何需要执行工作过程的应用逻辑,可以方便将多个工作过程拼凑起来,且自动集成重试和失败处理,以及日志和上报功能 这个LightWorkFlowManager轻量的工作过程管理库是我所在的团队在GitHub上使用最友好的MIT协议开源的库,请看https://github.com/dotnet-campus/LightWorkFlowManager 这个LightWorkFlowManager轻量的工作过程管理库现在已经在我团队的正式产品应用上运行有半年了,相对来说比较稳定。使用过程中如果有任何问题,都欢...

  gKJ2xtp6I8Y7   2023年11月06日   52   0   0 .NET

本文将告诉大家一些笔迹算法,从用户输入的点集,即鼠标轨迹点或触摸轨迹点等,转换为一个可在界面绘制显示笔迹画面的基础数学算法。尽管本文标记的是WPF的笔迹算法,然而实际上本文更侧重基础数学计算,理论上可以适用于任何能够支持几何绘制的UI框架上,包括UWP或WinUI或UNO或MAUI或Eto等框架 我将从简单到复杂的顺序描述笔迹算法,本文属于比较偏算法底层,阅读之前请先确保初中的数学知识还没忘了 本文适合于想要了解笔迹绘制更多细节的伙伴,以及期望自己设计出更好看的笔迹的伙伴,以及没事干摸鱼看博客的伙伴 最简单的笔迹轨迹算法 大家都知道,无论是鼠标还是触摸还是笔,所产生的数据基本都是点数据。根据点...

  gKJ2xtp6I8Y7   2023年11月06日   26   0   0 .NET

本文记录一个WPF已知问题,当WPF的RadioButton指定GroupName且将IsChecked状态绑定到ViewModel上,将包含以上控件的代码的窗口显示两个,接着关闭其中一个。此时可以看到依然开着的窗口的RadioButton控件无法正确在用户界面上点击选中 此问题已经报告给WPF官方,请看https://github.com/dotnet/wpf/issues/2995 最小复现代码:https://github.com/walterlv/Walterlv.Issues.RadioButton.GroupName 此问题已被WPF官方修复,只需更新.NET即可 参考文档:202...

  gKJ2xtp6I8Y7   2023年11月06日   60   0   0 .NET

本文记录一个WPF已知问题,当WPF的RadioButton指定GroupName且将IsChecked状态绑定到ViewModel上,将包含以上控件的代码的窗口显示两个,接着关闭其中一个。此时可以看到依然开着的窗口的RadioButton控件无法正确在用户界面上点击选中 此问题已经报告给WPF官方,请看https://github.com/dotnet/wpf/issues/2995 最小复现代码:https://github.com/walterlv/Walterlv.Issues.RadioButton.GroupName 此问题已被WPF官方修复,只需更新.NET即可 参考文档:202...

  gKJ2xtp6I8Y7   2023年11月02日   18   0   0 .NET

本文将告诉大家一些笔迹算法,从用户输入的点集,即鼠标轨迹点或触摸轨迹点等,转换为一个可在界面绘制显示笔迹画面的基础数学算法。尽管本文标记的是WPF的笔迹算法,然而实际上本文更侧重基础数学计算,理论上可以适用于任何能够支持几何绘制的UI框架上,包括UWP或WinUI或UNO或MAUI或Eto等框架 我将从简单到复杂的顺序描述笔迹算法,本文属于比较偏算法底层,阅读之前请先确保初中的数学知识还没忘了 本文适合于想要了解笔迹绘制更多细节的伙伴,以及期望自己设计出更好看的笔迹的伙伴,以及没事干摸鱼看博客的伙伴 最简单的笔迹轨迹算法 大家都知道,无论是鼠标还是触摸还是笔,所产生的数据基本都是点数据。根据点...

  gKJ2xtp6I8Y7   2023年11月02日   56   0   0 .NET

本文将和大家推荐我团队开源的LightWorkFlowManager轻量的工作过程管理库,适合任何需要执行工作过程的应用逻辑,可以方便将多个工作过程拼凑起来,且自动集成重试和失败处理,以及日志和上报功能 这个LightWorkFlowManager轻量的工作过程管理库是我所在的团队在GitHub上使用最友好的MIT协议开源的库,请看https://github.com/dotnet-campus/LightWorkFlowManager 这个LightWorkFlowManager轻量的工作过程管理库现在已经在我团队的正式产品应用上运行有半年了,相对来说比较稳定。使用过程中如果有任何问题,都欢...

  gKJ2xtp6I8Y7   2023年11月02日   67   0   0 .NET

本文将介绍如何将MAUI的底层替换为WPF框架层,且将MAUI的内容嵌入到WPF的一个控件里面,无UI框架嵌入的空域问题 本文是MAUI框架开发博客,而不是MAUI应用开发博客,本文更多介绍的是进行MAUI这个框架的开发内容。不熟悉或不进行MAUI框架开发的伙伴也可以看着玩,看看这个有趣的黑科技。必须说明的是本文介绍的这条路仅仅只是我的想法,本文也仅仅完成了证明了技术上的可行性,不代表着后续MAUI必须往这个方向发展,以及不代表工程上的可行性 开始之前先看看效果,以下代码是放入到WPF项目的MainWindow.xaml文件里面的 <Grid> <StackPanel>...

  gKJ2xtp6I8Y7   2023年11月02日   67   0   0 .NET
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~