- 博客(35)
- 资源 (1)
- 问答 (3)
- 收藏
- 关注
原创 【avalonia教程】18. 通过代码实现绑定效果
本文介绍了在Avalonia UI中实现数据绑定的多种方法。首先说明需要安装System.Reactive包,然后演示了通过GetObservable订阅TextBox文本变化的底层实现。接着展示了三种常用绑定方式:使用Bind方法、索引器语法和指定Source的绑定。文章还指出反射绑定可能存在性能问题,并给出了基于编译绑定的高性能实现方案。最后介绍了控件间属性直接绑定的语法,并建议在非性能关键场景优先使用简单的Binding方式。
2025-11-05 00:20:52
305
原创 【avalonia教程】17mvvm简介、command
摘要:MVVM是Model-View-ViewModel架构模式,其中Model处理业务数据,View负责UI展示,ViewModel作为中间层实现数据绑定和命令绑定。该模式通过分离关注点提高代码可维护性和可测试性。示例中展示了Command模式的实现方式,相比传统Click事件更灵活,能适应不同DataContext的场景。MVVM通过数据绑定实现View和ViewModel的自动同步,是现代化UI开发的重要模式。
2025-10-27 20:41:22
501
原创 【avalonia教程】16mvvm初体验(1)
本文介绍了MVVM模式中TextBox控件的双向绑定机制。通过示例代码展示了TextBox的Text属性与ViewModel属性的双向绑定关系,并验证了控件修改会同步更新ViewModel属性。但当ViewModel属性变化时,需要使用INotifyPropertyChanged接口通知UI更新。最后介绍了使用CommunityToolkit.Mvvm工具包简化属性通知的实现方式,通过[ObservableProperty]注解自动生成通知代码。本文演示了MVVM中数据绑定的核心机制和实现方式,以及如何简化
2025-10-24 22:22:57
288
原创 【avalonia教程】15Binding的其他属性(2)
摘要:本文介绍了Avalonia数据绑定的最后三个属性:ElementName、Source和RelativeSource。ElementName用于引用同视图中的其他控件作为绑定源;Source用于显式指定数据源对象;RelativeSource则支持相对绑定,包括Self(绑定到自身属性)、FindAncestor(绑定到指定层级的父控件)等模式。文章通过代码示例展示了各种用法,并解释了RelativeSource的实现原理,包括其ProvideValue方法如何创建对象实例。最后还探讨了仿照Relat
2025-10-22 18:25:26
498
1
原创 【avalonia教程】14Binding的其他属性(1)
本文介绍了Avalonia中数据绑定的几种高级用法:1)通过DataType属性手动指定DataContext类型;2)使用x:Type标记语法表示类的Type类型;3)设计时绑定d:DataContext的简写用法;4)Binding的四个重要属性:FallbackValue、TargetNullValue、BindingPriority和UpdateSourceTrigger。重点讲解了BindingPriority的优先级机制和UpdateSourceTrigger的不同触发方式,特别是Explici
2025-10-20 22:26:38
675
1
原创 【avalonia教程】13绑定控件
本文补充了Avalonia中数据绑定的几个关键点: 转换器参数使用: 通过ConverterParameter传递简单值(如字符串"test") 支持传递复杂对象作为参数 区域性支持: 可通过culture参数实现本地化转换 示例展示了中英文区域的不同处理 DataContext绑定差异: 编译绑定(x:DataType)需要严格匹配DataContext层级 ReflectionBinding会向上查找可用的DataContext 控件间绑定: 支持绑定到父控件或其他控件的属性 示例展
2025-10-17 23:12:13
848
1
原创 【avalonia教程】12自定义Converter
本文介绍了在Avalonia中自定义值转换器(Converter)的方法,包括单值和多值转换器。对于单值转换器,通过实现IValueConverter接口或使用更简洁的FuncValueConverter,将int值转换为bool值。多值转换器则通过IMultiValueConverter接口或FuncMultiValueConverter,实现多个int参数同时满足条件时返回bool值。两种方法都展示了从定义转换器类到在AXAML中使用的完整流程,并提供了简化实现的方式,使代码更简洁高效。
2025-10-16 22:14:58
428
1
原创 【avalonia教程】11字符串格式化、avalonia自带绑定值的转换
摘要:本文介绍了Avalonia中绑定值的转换方法。首先讲解了StringFormat的用法,包括字符串格式化(如"hello {0}")和数字格式化(如{0:0.0})。然后介绍了内置转换器,包括取反运算符(!)、StringConverters.IsNullOrEmpty等,并演示了如何用于按钮的IsEnabled属性。最后讲解了x:Static标记扩展,展示如何绑定静态成员值。这些功能提供了灵活的数据绑定转换方式,能满足各种UI展示需求。
2025-10-15 22:16:04
843
1
原创 【avalonia教程】10数据绑定语法格式
本文介绍了avalonia数据绑定的基本语法和参数配置。首先展示了基础绑定语法{Binding Path=Property},并说明Path关键字可以省略。然后通过Student类示例演示了属性链式绑定(StudentInfo.Name)和自引用绑定({Binding}或{Binding .})。最后解释了五种绑定模式(OneWay、OneWayToSource、TwoWay等)的概念,说明属性值变化方向的三种基本模式,为后续MVVM讲解做铺垫。
2025-10-14 23:26:32
470
1
原创 【avalonia教程】09设计时绑定与所有控件都有DataContext属性
本文介绍了AvaloniaUI中的设计时绑定机制,重点讲解了DataContext属性的层级继承原理。设计时通过Design.DataContext可在预览窗口模拟数据绑定效果,但不会影响运行时行为。所有控件都具有DataContext属性,子控件会逐级向上查找父控件的DataContext进行数据绑定。文中还演示了在XAML和代码中设置DataContext的不同方式,并解释了绑定的查找路径机制,最后通过示例展示了父控件DataContext的类型转换和继承特性。
2025-10-13 20:57:35
1087
1
原创 【avalonia教程】0708DataContext、Binding与编译绑定
本文介绍了Avalonia UI中数据绑定的基本使用方法。首先展示了直接在XAML中定义TextBlock控件的静态文本方式,指出其维护不便的问题。然后详细讲解了通过DataContext实现数据绑定的方法,包括创建ViewModel类、设置DataContext属性以及XAML中的绑定语法。文章还分析了Avalonia的编译绑定机制,提供了关闭编译绑定的三种方式(全局、文件级和控件级),并比较了它们的优缺点。最后推荐使用编译绑定,并给出了指定DataContext类型的具体实现方法,通过在Window节点
2025-10-12 10:20:44
1011
1
原创 【avalonia教程】05Button与Border
本文介绍了AvaloniaUI中Button和Border控件的核心用法与属性。主要内容包括: Button控件的Content属性详解,通过[Content]特性简化XAML语法,支持嵌套控件; Margin属性的三种参数写法及设备无关单位说明; Border控件的关键属性:Background/BorderBrush的颜色设置、CornerRadius的三种圆角定义方式、BoxShadow阴影的6个参数配置; 类型转换的三种实现方式:TypeConverter、枚举和构造函数。
2025-10-09 21:19:13
1145
1
原创 【avalonia教程】04MainWindow与TextBlock
本文介绍了Avalonia UI开发中MainWindow窗口的创建与布局。通过分析MainWindow.axaml和MainWindow.axaml.cs文件,说明了窗口初始化过程。重点讲解了XAML文件中Window节点的设计时属性(如d:DesignWidth)和运行时属性(如Title)的区别,并演示了使用TextBlock组件显示文本的方法,包括VerticalAlignment和HorizontalAlignment属性的使用。文章还提到了如何通过AvaloniaRider插件实现实时预览功能,
2025-10-08 08:53:50
628
1
原创 【avalonia教程】02. 环境搭建
本文介绍了dotnet和Avalonia开发环境的搭建方法。首先推荐安装dotnet8.0,然后通过命令行安装Avalonia项目模板。建议使用JetBrains Rider作为开发工具,并详细说明了如何在Rider中创建空白Avalonia项目。创建完成后等待依赖加载,运行项目后若出现Avalonia欢迎页面即表示项目创建成功。文中提供了相关软件的下载链接和具体的命令行操作步骤。
2025-10-06 09:53:38
274
1
原创 【avalonia教程】01. avalonia简介
avalonia是基于dotnet开发的一套ui框架,它支持跨平台运行(即编写一套代码,在多平台运行)。pc端:windows、macos、linux。如果涉及到信创开发的小伙伴,avalonia是不错的选择手机端:android、ios其他:鸿蒙——仅存在理论上的适配,但要真正兼容鸿蒙,还有很长的路要走那avalonia为什么能做到支持跨平台呢?原因是它使用自己的渲染引擎来绘制 UI 控件,确保在所有支持的平台上具有一致的外观和行为。这句话不是很好懂,接下来举个例子。
2025-10-05 14:52:07
614
2
原创 【大白话看懂redis官网文档】——redis概述
最近仔细的啃了一遍redis的官网文档,虽然已经部分被中文翻译,但前后的内容逻辑缺乏连贯性,内容相对比较独立,不便于新手和初学者阅读。这里想用更易懂的语言和板块,让大家快速理解官方文档的精髓文章目录一、redis概述1. 场景举例——验证码单机模式下验证码的实现单机模式实现的问题多实例模式下实现验证码方式的探讨2. 引出redis二、关于redis的官方描述开源协议GPLLGPLApacheBSD、MIT一、redis概述相信做后端开发,特别是做java的小伙伴,无论目前手里的项目是否用到red.
2021-11-25 23:26:46
648
原创 使用junit测试方法抛出期望异常
1. 实例代码package com.ruoyi.common.utils;import org.junit.Rule;import org.junit.jupiter.api.Test;import org.junit.rules.ExpectedException;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import static org.juni
2021-06-27 13:49:29
850
原创 mockito使用速查手册
文章目录1. 依赖1.1 pom.xml1.2 引用2. 基本使用实例2.1 验证行为2.2 模拟我们所期望的结果例一例二2.3 使用Answer接口的实现来mock数据RETURNS_SMART_NULLSRETURNS_DEEP_STUBS2.4 模拟方法抛出异常2.5 使用注解快速模拟在基类中添加初始化mock的代码使用built-in runner:MockitoJUnitRunner2.6 参数匹配匹配指定参数匹配任意参数注意事项2.7 捕获参数来进一步断言2.8 使用方法预期回调接口生成期望值(
2021-06-25 09:55:16
1316
原创 base64
文章目录1. base64简介2. 早期base64的操作方式3. JDK8以后的操作方式1. base64简介Base64是⽹网络上最常⻅见的⽤用于传输8Bit字节码的编码⽅方式之⼀一,Base64就是⼀一种基于64个可打印字符来表示⼆二进制数据的⽅方法基于64个字符A-Z,a-z,0-9,+,/的编码⽅方式,是⼀一种能将任意⼆二进制数据⽤用64种字元组合成字符串串的⽅方法,⽽而这个⼆二进制数据和字符串串资料料之间是可以互相转换的,在实际应⽤用上,Base64除了了能将⼆二进制数据可视化之外,也常⽤用
2021-06-24 10:04:27
199
原创 jdk8中的方法与构造函数
1. 概述以前的方法调用是对象.方法名或类名.方法名,jdk1.8提供了另外一种调用方式::方法引用是一种更简洁易懂的lambda表达式,操作符是双冒号::,用来直接访问类或者实例已经存在的方法或构造函数。通过方法的引用,可以将方法的引用赋值给另一个变量语法:左边是容器(可以使类名,实例名),中间是::,右边是相应的方法名静态方法,则是ClassName::methodName,例如:Object::equals实例方法,则是Instance::methodName构造函数,则是类名::ne
2021-06-23 09:27:28
261
原创 lambda表达式
文章目录1. 函数式编程2. lambda表达式范例3. lambda表达式使用场景4. 好处5. 自定义Lambda接口编程6. Function接口的使用6.1 java8内置的四大核心函数式接口ConsumerSupplierFunction1. 函数式编程所谓函数式编程,即可理解是将一个函数(也成为行为)作为一个参数进行传递,面向对象编程是对数据的抽象(各种各样的POJO类),而函数式编程则是对行为的抽象(将行为做为一个参数进行传递)2. lambda表达式范例传统的创建线程的方式Threa
2021-06-22 13:46:15
287
原创 java8时间操作
文章目录1. 时间操作类2. 常见API3. 日期时间格式化4. 获得指定的日期5. 计算日期时间差java.time.Duration1. 时间操作类LocalDate:不包含具体时间的日期。LocalTime:不含日期的时间。LocalDateTime:包含日期及时间。2. 常见APILocalDate today = LocalDate.now();System.out.println("今天⽇日期:" + today);//获取年,月,日,周几System.out.println(
2021-06-21 09:22:02
662
原创 java8中接口方法的重新定义
文章目录1. 在接口中,使用default定义的方法,可以实现方法体2. 在接口中可定义静态方法,直接通过接口调用3. 疑问及解答3.1 问题一3.2 问题二1. 在接口中,使用default定义的方法,可以实现方法体接口public interface Animal { void run(); void eat(); default void live() { System.out.println("活着"); }}实现类public
2021-06-20 08:02:42
297
原创 Optional类
文章目录1. 作用2. 创建Optional类3. 访问Optional对象的值4. 兜底orElse方法5. map和flatMap方法6. 其他常用方法6.1 orElseGet6.2 orElseThrow1. 作用解决空指针异常。本质是一个包含有可选值的包装类,这意味着Optional类既可以含有对象,也可以为空2. 创建Optional类// null值作为参数传递进去,则会抛出异常Optional optional = Optional.of(new Object());// 传
2021-06-19 17:57:36
301
原创 java8 stream使用速查手册
文章目录1. 概述1.1 流的概述1.2 操作详情1.3 简单实例2. map、filter和flatMap函数2.1 map函数2.2 filter函数2.3 flatMap函数2.4 注意事项3.sorted与limit函数3.1 sorted函数实现一实现二3.2 limit函数4. allMatch与anyMatch4.1allMatch函数4.2 anyMatch5. max和min函数6. 并行流paralleStream6.1 为什么会有并行流6.2 底层原理6.3 两个区别6.4 问题7.
2021-06-18 15:30:38
489
原创 spring cloud项目通过IDEA启动多实例无法通过active profiles指定端口的问题
1.问题springcloud项目中,希望通过IDEA的edit configurations中的Active profiles指定端口来启动多实例,结果发现配置一直不生效。配置图如下:但启动第二个实例时,仍然报端口被占用,可见启动的仍然是application.properties中配置的端口,上图的端口配置并没有生效,报错图如下2.解决方案后来查询了这篇提问,发现原因是spring-...
2020-05-01 09:17:03
2426
原创 leetcode探索初级算法-数组[删除排序数组中的重复项]
目录1.题目描述2. 题目解析3.题目思路4.实现代码1.题目描述给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。你不需要考虑数组中超出新长度后面的元素。原题链接2. 题目解析这里有两点需要注意的:给定的数组是有序数组,否则以下解法...
2020-04-14 15:02:19
206
转载 查看JVM内存使用状况
看到一篇JVM内存使用状况操作,在此记录一下https://www.cnblogs.com/zhi-leaf/p/10629033.html
2020-04-10 17:07:54
218
原创 logback中设置按小时rolling失效问题记录
1.实现功能希望在日期文件夹中存放以小时为单位归档的日志,原始配置如下${log_path}\\%d{yyyy-MM-dd,aux}\\test.%d{yyyy-MM-dd_HH}.%i.log发现没有成功。将其中的"\“修改为”/"后功能实现${log_path}/%d{yyyy-MM-dd,aux}/test.%d{yyyy-MM-dd_HH}.%i.log...
2019-11-21 14:56:41
1029
原创 【springboot】解决跨域问题
1. 问题概述采用前后端分离的模式开发,在其他电脑上访问网页的时候,与后段交互出现跨域报错,报错内容如下。在网上找了许多资料后,通过拦截器的方式解决问题,在此记录一下报错记录Request header field token is not allowed by Access-Control-Allow-Headers in preflight response.2. 解决方式2....
2019-11-04 11:22:02
284
原创 Springboot接收JSON参数
controller中接收json参数pom.xml中引入fastjson <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version>...
2019-07-30 14:51:48
3512
原创 springboot整合tx.mybatis遇到的问题
springboot整合mybatis出的两个问题问题一:项目无法正常启动报错内容问题原因问题二:service调用mapper方法时报错报错内容问题原因在springboot整合mybatis,使用tk.mybatis的时候,遇到了两个问题。写了个简单的demo后解决,在这里记录一下。问题一:项目无法正常启动报错内容Error starting ApplicationContext. T...
2019-07-14 23:57:00
710
1
Everything-1.4.1.969.x64-Setup.rar
2020-05-08
linux环境,C#调用c++编译后的so文件报错
2024-01-14
linux环境下用clion开发c程序,报错undefined reference
2024-01-10
CSRF下JSON攻击如何实现
2020-09-28
同一浏览器登录不同的网站,JSESSIONID的赋值问题
2020-09-24
[JAVA]client端使用socket向server端上传文件为何失败?
2019-03-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅