C# Avalonia 17- ControlTemplates - MultiPartTemplates

news/2025/11/2 4:51:39/文章来源:https://www.cnblogs.com/dalgleish/p/19181893

MultiPartTemplates.axaml代码

<Window xmlns="https://github.com/avaloniaui"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"Height="239" Width="248"x:Class="AvaloniaUI.MultiPartTemplates"Title="MultiPartTemplates"><Window.Resources><!-- ===== 基础画刷定义 ===== --><SolidColorBrush x:Key="StandardBorderBrush" Color="#888" /><SolidColorBrush x:Key="StandardBackgroundBrush" Color="#FFF" /><SolidColorBrush x:Key="HoverBorderBrush" Color="#DDD" /><SolidColorBrush x:Key="SelectedBackgroundBrush" Color="Blue" /><SolidColorBrush x:Key="SelectedForegroundBrush" Color="White" /><SolidColorBrush x:Key="GlyphBrush" Color="#444" /><LinearGradientBrush x:Key="ListBoxBackgroundBrush" StartPoint="0,0" EndPoint="1,0.001"><GradientStop Offset="0.0" Color="White" /><GradientStop Offset="0.6" Color="White" /><GradientStop Offset="1.2" Color="#DDDDDD" /></LinearGradientBrush><LinearGradientBrush x:Key="StandardBrush" StartPoint="0,0" EndPoint="0,1"><GradientStop Offset="0.0" Color="#FFF" /><GradientStop Offset="1.0" Color="#CCC" /></LinearGradientBrush><LinearGradientBrush x:Key="PressedBrush" StartPoint="0,0" EndPoint="0,1"><GradientStop Offset="0.0" Color="#BBB" /><GradientStop Offset="0.1" Color="#EEE" /><GradientStop Offset="0.9" Color="#EEE" /><GradientStop Offset="1.0" Color="#FFF" /></LinearGradientBrush></Window.Resources><Window.Styles><!-- ========== ListBox 样式 ========== --><Style Selector="ListBox"><Setter Property="Background" Value="{StaticResource StandardBackgroundBrush}"/><Setter Property="BorderBrush" Value="{StaticResource StandardBorderBrush}"/><Setter Property="BorderThickness" Value="1"/><Setter Property="CornerRadius" Value="3"/><Setter Property="Padding" Value="2"/><Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/><Setter Property="Template"><ControlTemplate><Border Background="{TemplateBinding Background}"BorderBrush="{TemplateBinding BorderBrush}"BorderThickness="{TemplateBinding BorderThickness}"CornerRadius="{TemplateBinding CornerRadius}"><ScrollViewer Focusable="False"><ItemsPresenter Margin="{TemplateBinding Padding}"/></ScrollViewer></Border></ControlTemplate></Setter></Style><!-- ========== ListBoxItem 样式 ========== --><Style Selector="ListBoxItem"><Setter Property="Padding" Value="4,2"/><Setter Property="CornerRadius" Value="3"/><Setter Property="Background" Value="Transparent"/><Setter Property="BorderBrush" Value="Transparent"/><Setter Property="BorderThickness" Value="2"/><Setter Property="Transitions"><Transitions><DoubleTransition Property="FontSize" Duration="0:0:0.2"/><BrushTransition Property="Background" Duration="0:0:0.2"/></Transitions></Setter><Setter Property="Template"><ControlTemplate><Border Name="Border"BorderThickness="{TemplateBinding BorderThickness}"BorderBrush="{TemplateBinding BorderBrush}"Background="{TemplateBinding Background}"CornerRadius="{TemplateBinding CornerRadius}"Padding="{TemplateBinding Padding}"><ContentPresenter Content="{TemplateBinding Content}"ContentTemplate="{TemplateBinding ContentTemplate}"HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/></Border></ControlTemplate></Setter><!-- 鼠标Hover状态 --><Style Selector="^:pointerover"><Setter Property="BorderBrush" Value="{StaticResource HoverBorderBrush}"/><Style.Animations><Animation Duration="0:0:1" PlaybackDirection="Alternate" IterationCount="2"><KeyFrame Cue="0%"><Setter Property="FontSize" Value="14"/></KeyFrame><KeyFrame Cue="100%"><Setter Property="FontSize" Value="20"/></KeyFrame></Animation></Style.Animations></Style><!--选中状态--><Style Selector="^:selected"><Setter Property="Background" Value="{StaticResource SelectedBackgroundBrush}"/><Setter Property="Foreground" Value="{StaticResource SelectedForegroundBrush}"/></Style>    </Style><!-- 垂直 ScrollBar 模板 --><Style Selector="ListBox /template/ ScrollViewer /template/ ScrollBar:vertical"><Setter Property="Width" Value="15"/><Setter Property="Template"><ControlTemplate><Grid RowDefinitions="18,*,18"><RepeatButton Grid.Row="0" Name="PART_LineUpButton" Background="{StaticResource StandardBackgroundBrush}"><Path Fill="{StaticResource GlyphBrush}"Data="M 0 4 L 8 4 L 4 0 Z"Width="8" Height="4" /></RepeatButton><Track Grid.Row="1"Name="PART_Track"Minimum="{TemplateBinding Minimum}"Maximum="{TemplateBinding Maximum}"        Value="{TemplateBinding Value, Mode=TwoWay}"    ViewportSize="{TemplateBinding ViewportSize}"Orientation="{TemplateBinding Orientation}"IsDirectionReversed="True"><Track.Thumb><Thumb Name="PART_Thumb"/></Track.Thumb></Track><RepeatButton Grid.Row="2" Name="PART_LineDownButton" Background="{StaticResource StandardBackgroundBrush}"><Path Fill="{StaticResource GlyphBrush}"Data="M 0 0 L 4 4 L 8 0 Z"Width="8" Height="4" /></RepeatButton></Grid></ControlTemplate></Setter></Style><!-- 滚动条 Thumb --><Style Selector="ListBox /template/ ScrollViewer /template/ ScrollBar /template/ Thumb"><Setter Property="Background" Value="{StaticResource StandardBackgroundBrush}" /><Setter Property="BorderBrush" Value="{StaticResource StandardBorderBrush}" /><Setter Property="BorderThickness" Value="1" /><Setter Property="CornerRadius" Value="12" /><Setter Property="Template"><ControlTemplate><Border Background="{TemplateBinding Background}"BorderBrush="{TemplateBinding BorderBrush}"BorderThickness="{TemplateBinding BorderThickness}"CornerRadius="{TemplateBinding CornerRadius}" /></ControlTemplate></Setter><!-- 鼠标悬停状态 --><Style Selector="^:pointerover"><Setter Property="Background" Value="{StaticResource HoverBorderBrush}" /><Setter Property="BorderBrush" Value="{StaticResource HoverBorderBrush}" /></Style><!-- 鼠标离开状态 --><Style Selector="^:not(:pointerover)"><Setter Property="Background" Value="{StaticResource StandardBackgroundBrush}" /><Setter Property="BorderBrush" Value="{StaticResource StandardBorderBrush}" /></Style></Style></Window.Styles><Grid Margin="10"><ListBox><ListBoxItem>🍎 Apple</ListBoxItem><ListBoxItem>🍌 Banana</ListBoxItem><ListBoxItem>🍇 Grape</ListBoxItem><ListBoxItem>🍊 Orange</ListBoxItem><ListBoxItem>🍉 Watermelon</ListBoxItem><ListBoxItem>🍓 Strawberry</ListBoxItem><ListBoxItem>🍍 Pineapple</ListBoxItem><ListBoxItem>🥝 Kiwi</ListBoxItem><ListBoxItem>🍒 Cherry</ListBoxItem><ListBoxItem>🍑 Peach</ListBoxItem></ListBox></Grid>
</Window>

MultiPartTemplates.axaml.cs代码

using Avalonia;
using Avalonia.Controls;namespace AvaloniaUI;public partial class MultiPartTemplates : Window
{public MultiPartTemplates(){InitializeComponent();}
}

运行效果

image

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/953145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux防火墙配置

一、概述 CentOS 7 与 CentOS 6.x 最大的差异之一在于防火墙默认工具:前者采用firewalld作为默认防火墙管理工具,后者则是iptables。本文将详细讲解firewalld的日常配置、iptables的传统用法,以及两种防火墙工具的切…

系统稳定性—NullPointerException常见原因及解决方法

一、概述 在Java开发中,NullPointerException(空指针异常)是最常见的运行时异常之一,通常发生在程序尝试访问或操作一个为null的对象引用时。这种异常不仅会导致程序崩溃,还会增加调试难度。 二、产生原因 2.1 变…

电子丨磁珠与电感

目录详细对比表格深入解析1. 工作原理的根本区别2. 应用场景的典型例子如何选择和区分?总结 磁珠(Ferrite Bead)和电感(Inductor)在外形上可能非常相似,但它们的设计、工作原理和用途有本质的区别。 简单来说,可…

算法第二次作业

1.关于我的找第k小数的分治算法,我的代码的实现是基于分治思想的随机化 Quickselect 算法,用来在无序数组中找到第 k 小的元素(第 k 小按 1-based 计数)。我是将问题分解:通过一次“划分(partition)”操作把数组…

个人电脑上的知识管理利器:访答知识库深度体验

个人电脑上的知识管理利器:访答知识库深度体验 为什么选择本地私有知识库 在信息爆炸的时代,知识管理成为每个人的必修课。与云端知识库相比,访答知识库作为本地私有知识库,提供了更高的数据安全性和隐私保护。你的…

安卓手机搭建gitea

前期准备 准备好termux以及远程连接ssh.[提前搞定,不多赘述了。] 1.安装 termux。 termux-app_v0.119.0-beta.3+apt-android-7-github-debug_arm64-v8a.apk 2.ssh 每次重新打开都需要重启ssh以及配置端口。否则就会出…

总结2

该书系统勾勒了程序员从“小工”到专家的成长路径,强调“个人责任”与“实践导向”的双重驱动。书中建议通过“曳光弹开发”快速验证需求假设,避免陷入过度设计或脱离实际的陷阱;同时,借助“重构”实践保持代码的灵…

总结1

《程序员修炼之道:从小工到专家》以“注重实效的哲学”为核心,强调程序员应从单纯的技术执行者蜕变为具备全局视野的专家型开发者。书中系统阐述了“正交性”原则,即通过模块间解耦设计提升系统灵活性,避免冗余和耦…

总结3

《程序员修炼之道:从小工到专家》不仅聚焦技术精进,更深入探讨了团队协作与沟通的关键作用。书中指出,专家型开发者需具备“用非技术语言解释复杂方案”的能力,以促进跨部门理解与共识。例如,通过主动与产品团队沟…

电子丨PCB设计中的“3W原则”和“20H原则”

“3W原则”和“20H原则”是PCB布局中两个非常重要的经验法则,主要用于提高电路板的信号完整性和电磁兼容性。1. 3W原则 3W原则主要关注的是信号线之间的串扰问题。核心思想:为了最小化信号线之间的串扰,走线中心到中…

pnpm 踩坑

Hello World本文来自博客园,作者:南宫影,转载请注明原文链接:https://www.cnblogs.com/nangongying/p/19184133

从廊桥分配学习优先队列

题目地址:P7913 [CSP-S 2021] 廊桥分配 - 洛谷首先考虑最朴素的做法,即枚举廊桥对国内和国际的分配,此过程时间复杂度O(n),接着问题就变成了有 i 个廊桥,有m架飞机,分别要在[ai,bi]时间段内使用一个廊桥,问最…

电子丨导通占空比

在DC-DC转换器(如Buck、Boost等开关电源)中,导通占空比(Duty Cycle) 是一个核心概念,直接决定了输出电压与输入电压的关系。它的定义和工作原理如下:1. 基本定义 导通占空比(D) 是指在一个开关周期内,开关管…

[SWPUCTF 2022 新生赛]奇妙的MD5 WP

[SWPUCTF 2022 新生赛]奇妙的MD5 WP 一上来页面让我们写一个奇妙的字符串,可能会有点蒙,查看 F12 源码也找不到什么有用的信息,我们这时去抓包一下这个网址,会发现: hint:select * from admin where password=md5…

DELL笔记本加内存的流水账 - zhang

刚好朋友送了一条笔记本内存条,虽然我的DELL笔记本平时也不做什么大的动作,总体来说内存是够用的,但有升级的机会就尝试去升级了。 在加内存条的时候遇到了几个问题,刚好是我之前不了解的电脑知识,也没找到相关的…

静电服对人体是安全的

静电服对人体是安全的🧑‍🏭 一、静电服的工作场景 静电服主要用于 防静电敏感环境,常见在:行业使用场景电子制造 SMT贴片、组装、测试、维修半导体 芯片封装、晶圆厂洁净室医疗设备 无尘净化间操作化工、油气 避…

MySQL元数据库information schema

一、概述 information_schema提供了对数据库元数据、统计信息以及有关MySQLServer信息的访问(例如:数据库名或表名、字段的数据类型和访问权限等)。该库中保存的信息也可以称为MySQL的数据字典或系统目录。 在每个M…

CSP-S 2025 差点(貌似真的)坠机记

突然发现自己成为老年选手。 省流:\([0,100]+[0,100]+[0,50]+[0,5]=[0,255]\)。 2025.9.19 明天怎么初赛了? 2025.9.20 今天怎么初赛了? 去年还做了很长时间的模拟题,今年是一套完整的题目都没做,不管了 qwq。从学…

一切的终点

这篇文章本来应该是一个月后写的,唉。 当 5 分钟切掉 T1,代码飞速跑过 T2 大样例时,我有那么一瞬间觉得自己能赢。 死磕 T3 2h+,费劲毕生所学无果,尽管最后时刻调出暴力,也无法改变这一切的结果。 梦想的舞台就在眼…