随笔分类 - WPF
摘要:一、定义: Template:在WPF中,Template通常指的是控件的模板,用于定义控件的外观和结构。每个控件都有一个默认的模板,但我们可以通过自定义模板来完全改变控件的外观,而不改变其行为。Template通常通过设置控件的Template属性来指定。 ControlTemplate:控件模板
阅读全文
摘要:一、UI渲染优化 1. 减少不必要的视觉元素 <!-- 避免过度使用复杂效果 --> <Border Background="LightGray" CornerRadius="5" Margin="5" Padding="10"> <!-- 使用简单样式代替复杂模板 --> </Border> <!
阅读全文
摘要:CPU:负责逻辑处理、布局计算、数据序列化、事件处理等。 内存:负责存储应用程序的所有数据,包括对象实例、UI元素、图像数据等。 GPU:负责渲染,即将UI元素(形状、文字、图像、效果)光栅化到屏幕上。 一、占用CPU的操作 CPU是“总指挥”,负责所有的计算和调度工作。任何需要“动脑筋”的操作都会
阅读全文
摘要:一、 组件注册方式 1. RegisterType(注册类型):“需要时请new一个” builder.RegisterType<ExposureInfoViewModel>().AsSelf().SingleInstance(); 作用:用于将一个具体的类注册到容器中,告知容器“当需要某个服务时,
阅读全文
摘要:一、依赖注入的核心思想 依赖注入(Dependency Injection,DI)是一种设计模式,它的核心思想是“控制反转”(IoC),即将对象的创建和管理从应用程序代码中分离出来,交给外部容器来处理。主要概念包括: 依赖:一个对象需要另一个对象来完成其工作,那么前者就依赖于后者。例如,一个orde
阅读全文
摘要:在 C# 中,+= 操作符的左侧可以是以下几种类型: 1. 事件(Event) 语法:事件名 += 处理方法作用:订阅事件(添加事件处理程序)。要求:左侧必须是 event 修饰的委托类型字段。 public class Button { public event EventHandler Clic
阅读全文
摘要:在WPF中,RaiseEvent 和直接调用事件处理程序(如 MouseRightButtonDown.Invoke)之间有一些区别。以下是这两者的主要区别: RaiseEvent 路由事件:RaiseEvent 是用于引发路由事件的。路由事件可以穿越元素树,从源元素开始,向上或向下传递给父元素或子
阅读全文
摘要:public static T FindChild<T>(DependencyObject parent, string childName) where T : DependencyObject { // 检查null情况 if (parent == null) return null; T fo
阅读全文
摘要:<Canvas> <TextBlock x:Name="stitchOverTopTextBlock"FontFamily="Microsoft YaHei" Text="好好学习 天天向上" SizeChanged="stitchOverTopTextBlock_SizeChanged" Pane
阅读全文
摘要:问题: 该触发器触发后,stitchOverTopControl中的IsRotate依赖属性没有更新。 <Trigger Property="WarningLevel" Value="2"> <Setter Property="Content" > <Setter.Value> <Grid Marg
阅读全文
摘要:是在MVVM中用来传递消息的一种方式。它是在MVVMLight框架中提供的一个实现了IMessenger接口的类,可以用来在ViewModel之间、ViewModel和View之间传递消息。 Send 接受一个泛型参数,表示要发送的消息内容。 Register 方法用于注册某个对象接收消息。 pub
阅读全文
摘要:PART_LeftThumb_DragDelta事件是拖拽过程中实时触发的。当用户按住Thumb控件并拖动时,该事件会在每次鼠标或手指移动时实时触发,而不是按照时间间隔定时触发。这使得应用程序可以实时响应用户的操作,更新UI或执行其他操作。 DragDeltaEventArgs.Horizontal
阅读全文
摘要:1. 抽象方法和虚方法在编程中都是处理继承和多态的重要概念,它们之间的关键差异是什么? ① 定义和实现:抽象方法是只有方法名称,没有方法体(也就是没有方法具体实现),子类必须重写父类抽象方法。虚方法有方法体,子类可以覆盖,也可不覆盖。 ② 声明位置:抽象方法只能声明在抽象类中,使用关键字“abstr
阅读全文
摘要:——什么是DIP(Device Independent Units,设备独立像素)?是指在不考虑具体设备的屏幕分辨率和物理尺寸的情况下定义的一种长度单位,通常用于描述在不同设备上的显示效果。但是,在实际应用中,DIP的值仍然会受到屏幕分辨率和物理尺寸的影响。 ——什么是像素? 像素是图像处理中的基本
阅读全文
摘要:主要包含以下几个事件: 1. UpdateSourceTrigger:用于控制数据绑定如何更新源数据的事件 PropertyChanged:每当目标属性的值更改时,将立即更新源属性。 LostFocus:当目标元素失去焦点时,更新源属性。 Explicit:只有在调用BindingExpressio
阅读全文
摘要:C#的托管资源是由CLR(公共语言运行时)管理的资源,CLR在程序运行时会自动分配和回收托管资源,开发者无需手动管理。包括但不限于以下几种: 1. 对象:C#中的所有对象都是托管资源,包括类对象、数组、委托、接口等。 2. 内存:C#中的内存管理是由CLR自动进行的,CLR会自动为对象分配内存,并在
阅读全文
摘要:一、定义: ValidatesOnDataErrors 是一种在 WPF 中实现数据校验的方式,可以通过在 XAML 中设置属性 ValidatesOnDataErrors 为 True 来启用。 二、使用: ① 在 ViewModel 中实现 IDataErrorInfo 接口,该接口定义了两个属
阅读全文
摘要:一、定义 InputHitTest是一个用于检测鼠标指针是否命中某个可视元素的方法。它可以返回命中的最上层元素。 二、用法: ① 首先,我们需要获取InputHitTest方法所需的参数,即鼠标指针的位置。可以通过Mouse类的GetPosition方法来获取当前鼠标指针的位置: Point pos
阅读全文
摘要:正则表达式是一种用来匹配字符串的规则。每个字符在正则表达式中都有其特定的含义,下面是一些常见的字符及其含义: 1. ^:匹配字符串的开头位置。 2. $:匹配字符串的结尾位置。 3. .:匹配任意单个字符。 4. *:匹配0个或多个前面的字符。 5. +:匹配1个或多个前面的字符。 6. ?:匹配0
阅读全文
摘要:C#常用的五种定时器分别是: System.Timers.Timer System.Threading.Timer System.Windows.Threading.DispatcherTimer : WPF应用程序 System.Windows.Forms.Timer :WinForm应用程序 S
阅读全文
浙公网安备 33010602011771号