背景 微软的日志库一般是输出到控制台的,但是在WPF中并不能直接使用控制台,需要AllocConsole。 但是这种做法个人觉得不太安全(一关闭控制台整个程序就退出了?)。这时候就需要一个更加友好的方式输出日志。 问题 那如何将日志的内容显示到RichTextBox中? 实现LoggerProces ...
WPF 你真的会写 XAML 吗?浅谈 ControlTemplate 、DataTemplate 和其它 Template 本文希望从写死的代码慢慢引入 WPF 的一些机制。 一、Button 难题 我们想要修改 Button 的背景色但是效果非常不理想,默认的 Button 样式是完全无法给大家 ...
在WPF的第三方控件UI库中,有些DataGrid实现了但是又有一些没实现多选行绑定数据。所有我现在通过附加属性来实现。 首先,实现DataGrid多选附加属性类 /// <summary> /// DataGrid多选附加属性 /// </summary> public class DataGri ...
开源项目名称:leagueoflegends-OpenSilver 作者:Vicky&James leagueoflegends-opensilver:https://github.com/jamesnetgroup/leagueoflegends-opensilver leagueoflegend ...
通常情况下,使用相对宽度(如 * 星号单位)和适当的 HorizontalAlignment 是最简单有效的方法,可以确保子控件随着父控件的大小变化而自动调整。如果需要更精确的控制,可以考虑使用 RelativeSource 绑定或其他高级技术。确保父容器也支持子控件的动态尺寸调整非常重要。 ...
一、使用NuGet安装Prism框架 二、构建ViewModel基类,注册导航器,弹窗服务,事件聚合器,多语言,log4net日志 1、新建ViewModelBase基类,继承自BindableBase, INavigationAware, IRegionMemberLifetime, IConfi ...
新建wpf页面DataGridAutoView 引用空间: xmlns:ga="clr-namespace:WPFDemoMVVM.Helpers" <Window x:Class="WPFDemoMVVM.View.DataGridAutoView" xmlns="http://schemas.m ...
本文记录在WPF应用中鼠标、触摸混合输入,鼠标事件抬起时不会有MouseUp事件触发的问题。 事件输入我们都知道有3类:鼠标、触摸、触笔,鼠标是windows系统出来就有的事件,后面加了触笔、触摸。 1.鼠标输入,只会触发Mouse冒泡隧道事件; 2.触笔输入,会触发除了Stylus事件外,还会触发 ...
最近需要制作一个类似桌面宠物的东西,碰到了这样一个问题:受 MediaElement 支持的带 alpha 通道的视频格式有限,且后续还要接入相关的深度学习模型动态生成口型,大概率生成不了透明背景。这个该怎么办呢?一个思路是把视频抽帧抠图,然后依次显示透明背景的图片(或者再组合成视频播放)。另外一个 ...
AvalonDock 是我这些天在为自己项目做技术选型时发现的一个很好的开源项目,它是一个用于 WPF 的布局控件库,可以帮助我们实现类似 Visual Studio 的布局效果。因为它自带的一些样式我并不是很喜欢,我想要那种跟 WinUI 风格一样的样式。经过这几天的学习和尝试,我已经按照 Win ...
先看效果图: win11: win10: 大致思路是:通过反射获取Popup内部的原生窗口句柄,然后通过前文已经实现的WindowMaterial类来应用窗口特效;对于ToolTip,为了保持其易用性,我使用了附加属性+全局样式的方式来实现,ToolTip也是一个特殊的Popup. 前文链接:WPF ...
为了统一WPF/WinUI3/Uno仓库的项目架构,我们基于.NET Standard 2.0设计了一个可在所有平台上运行的框架,无需依赖第三方库。这个框架直接实现了项目分散化、模块化、视图注入、依赖注入、单例模式和MVVM等基于XAML的项目架构所需功能。采用这种方法,我们可以在不同版本(如WPF... ...
先看效果 我修改了ToggleButton的ControlTemplate,在ContentPresenter外面加了4个Border,控制4个Border的位置在ControlTemplate的左上、右上、左下、右下,选中时,触发4个边框的BorderThickness <Setter Prope ...
我在团队里面有接手过 Windows 客户端软件的自动更新模块,这是一个非常庞大的模块,我隔壁有一个团队在专门负责事情。而我需要做的只是去接入而已,在接入的过程中,我也了解到整个自动更新机制需要涉及到的功能 ...
本文将和大家介绍在什么情况下 WPF 将会在调用 VisualTreeHelper.GetDescendantBounds 方法时,返回一个无穷大的范围尺寸 ...
先看一下效果吧: 我们直接通过改造一下原版的TreeView来实现上面这个效果 我们先创建一个普通的TreeView 代码很简单: <TreeView> <TreeViewItem Header="人事部"/> <TreeViewItem Header="技术部"> <TreeViewItem He ...
@目录前言一、VirtualizingStackPanel1.1 虚拟化功能介绍1、在Window中添加一个ListBox控件。2、在设计视图中用鼠标选中ListBox控件并右健依次单击“编辑其他模板”-“编辑项的布局模板”-“编辑副本”。3、查看生成的模板代码。1.2 虚拟化参数介绍二、Custo ...
在数据绑定过程中,我们经常会使用StringFormat对要显示的数据进行格式化,以便获得更为直观的展示效果,但在某些情况下格式化操作并未生效,例如 Button的 Content属性以及ToolTip属性绑定数据进行StringFormat时是无效的。首先回顾一下StringFormat的基本用法 ...
在WPF中,屏幕上的所有内容,都是通过画笔(Brush)画上去的。如按钮的背景色,边框,文本框的前景和形状填充。借助画笔,可以绘制页面上的所有UI对象。不同画笔具有不同类型的输出( 如:某些画笔使用纯色绘制区域,其他画笔使用渐变、图案、图像或绘图)。 ...
Prism:框架介绍与安装 什么是Prism? Prism是一个用于在 WPF、Xamarin Form、Uno 平台和 WinUI 中构建松散耦合、可维护和可测试的 XAML 应用程序框架 Github https://github.com/PrismLibrary/Prism NuGet htt ...