C# Avalonia 16- Animation- ExpandElement

news/2025/10/12 3:16:17/文章来源:https://www.cnblogs.com/dalgleish/p/19136208

置顶的 C# Avalonia配置 已经更新

ExpandElement.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"Width="500" Height="400"xmlns:local="using:AvaloniaUI"x:Class="AvaloniaUI.ExpandElement"x:DataType="local:ExpandElementViewModel"Title="ExpandElement"><Window.Styles><Style Selector="Border#element"><Style.Animations><!-- https://docs.avaloniaui.net/docs/reference/controls/datagrid/ --><Animation Duration="0:0:2.5" FillMode="Forward"><!-- 起始 --><KeyFrame Cue="0%"><Setter Property="Opacity" Value="0.2"/><Setter Property="ScaleTransform.ScaleX" Value="0"/><Setter Property="ScaleTransform.ScaleY" Value="0"/><Setter Property="RotateTransform.Angle" Value="70"/></KeyFrame><!-- 展开动画 --><KeyFrame Cue="80%"><Setter Property="Opacity" Value="1"/><Setter Property="ScaleTransform.ScaleX" Value="1"/><Setter Property="ScaleTransform.ScaleY" Value="1"/><Setter Property="RotateTransform.Angle" Value="0"/></KeyFrame><!-- 弹性缩放 --><KeyFrame Cue="90%"><Setter Property="ScaleTransform.ScaleX" Value="0.98"/><Setter Property="ScaleTransform.ScaleY" Value="0.98"/></KeyFrame><KeyFrame Cue="100%"><Setter Property="ScaleTransform.ScaleX" Value="1"/><Setter Property="ScaleTransform.ScaleY" Value="1"/></KeyFrame></Animation></Style.Animations></Style></Window.Styles><Grid><Border Name="element"Margin="3"Background="LightGoldenrodYellow"BorderBrush="DarkBlue"BorderThickness="2"CornerRadius="5"Opacity="0.2"><Border.RenderTransform><TransformGroup><ScaleTransform/><RotateTransform/></TransformGroup></Border.RenderTransform><ScrollViewer><StackPanel Margin="10"><TextBlock Text="The foof feature is indispensable. You can configure the foof feature using the Foof Options dialog box."TextWrapping="Wrap" /><Button Content="Open Foof Options"HorizontalAlignment="Left"Margin="0,5,0,15" /><TextBlock Text="Largest Cities in the Year 100"FontSize="20"FontWeight="Bold"Margin="0,10" /><DataGrid CanUserSortColumns="False"AutoGenerateColumns="False"ItemsSource="{Binding Cities}"><DataGrid.ColumnHeaderTheme><ControlTheme TargetType="DataGridColumnHeader"><Setter Property="Background" Value="#444" /><Setter Property="FontSize" Value="15"/><Setter Property="Foreground" Value="White" /><Setter Property="BorderThickness" Value="0"/><Setter Property="BorderBrush" Value="Transparent"/><Setter Property="FontWeight" Value="Bold" /><Setter Property="HorizontalContentAlignment" Value="Center"/><Setter Property="VerticalContentAlignment" Value="Center"/></ControlTheme></DataGrid.ColumnHeaderTheme><DataGrid.Columns><DataGridTextColumn Header="Rank" Binding="{Binding Rank}" /><DataGridTextColumn Header="Name" Binding="{Binding Name}" /><DataGridTextColumn Header="Population" Binding="{Binding Population}" /></DataGrid.Columns></DataGrid></StackPanel></ScrollViewer></Border>        </Grid>
</Window>

ExpandElement.axaml.cs代码

using Avalonia;
using Avalonia.Controls;
using CommunityToolkit.Mvvm.ComponentModel;
using System.Collections.ObjectModel;namespace AvaloniaUI;
public class City
{public int Rank { get; set; }public string? Name { get; set; }public string? Population { get; set; }
}public class ExpandElementViewModel : ObservableObject
{public ObservableCollection<City> Cities { get; set; } = new(){new City { Rank = 1, Name = "Rome", Population = "450,000" },new City { Rank = 2, Name = "Luoyang (Honan), China", Population = "420,000" },new City { Rank = 3, Name = "Seleucia (on the Tigris), Iraq", Population = "250,000" },new City { Rank = 4, Name = "Alexandria, Egypt", Population = "250,000" },new City { Rank = 5, Name = "Antioch, Turkey", Population = "150,000" },new City { Rank = 6, Name = "Anuradhapura, Sri Lanka", Population = "130,000" },new City { Rank = 7, Name = "Peshawar, Pakistan", Population = "120,000" },new City { Rank = 8, Name = "Carthage, Tunisia", Population = "100,000" },new City { Rank = 9, Name = "Suzhou, China", Population = "n/a" },new City { Rank = 10, Name = "Smyrna, Turkey", Population = "90,000" }};
}
public partial class ExpandElement : Window
{public ExpandElement(){InitializeComponent();this.DataContext = new ExpandElementViewModel();}
}

运行效果

image

 

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

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

相关文章

DshanPI-A1 RK3576 armbian远程桌面

背景与问题使用设备:DshanPI-A1,搭载 Armbian 系统,窗口系统为 Wayland,GPU 采用开源驱动。初始尝试:使用 NoMachine 实现远程桌面,但存在两个问题:默认创建虚拟桌面,而非物理桌面;对 Wayland 支持不佳,会以…

Ubuntu Linux双网卡实现在校园网环境下的网络共享

实例描述: 双千兆网卡x86架构主机,Ubuntu Linux 22.04 Desktop版(Server版本同理),enp1s0连接需要认证的校园网(可能有设备最大连接数限制),enp2s0连接路由器。此时假设Ubuntu Linux已经通过校园网的认证并设置…

PVE8.x仅克隆虚拟机配置

PVE8.x仅克隆虚拟机配置操作步骤 复制配置文件 cp /etc/pve/qemu-server/<源VM ID>.conf /etc/pve/qemu-server/<新VM ID>.conf 编辑配置文件 ​ 修改磁盘路径:将原 VM ID 替换为新 ID(如 vm-100-disk-0…

SQL常用语句分类及示例

SQL常用语句分类及示例好的,SQL常用语句可以分为以下几大类,我将为您详细介绍并附上示例。这些语句是操作和查询关系型数据库的基础。 1. 数据查询语句 (DQL - Data Query Language) 主要用于从数据库中查询数据,核…

台式机主板上的电池要更换啦

当有内存、硬盘变动时,每次开机ASUS Z170-A主板都提示需要按F1进行重新设置,即使在主板BIOS的设置中把F1提示关闭,依旧不行。 同时Intel Virutalization选择enable,都无法生效。 这时可能是CMOS battery failure,…

轻量服务器Lighthouse + 1Panel 部署.NET 8 Web应用

本文将手把手使用轻量服务器+1Panel进行部署一个.NET 8的网站应用,数据库采用MySQL 5.7。并解决部署过程中的一些问题。前言腾讯云轻量服务器Lighthouse:众所周知,因其价格低、性能足(100%CPU)、操作简单,深受开…

bash alias 多引号问题

一句话: 像python那样,在里面使用\abc\,在bash中不行需要把 \ 换成 \ 这样问题解决You can make that command into a Bash alias by editing your shell configuration file (typically ~/.bashrc or ~/.bash_alia…

关于近期调研各类游戏开发引擎的一些感想

最近突发奇想想要尝试自己开发一些小型的轻量化游戏,于是尝试学习了一些游戏设计的相关知识,同时对比了目前主流的几款开发引擎。 由于个人的风格的喜好是2d横板游戏(像素动作+恶魔城)和视觉小说(galgame),所以…

Electron38-Vue3OS客户端OS系统|vite7+electron38+arco桌面os后台管理

最新研发electron38+vite7+arco-design电脑端os后台管理ElectronViteOS。 vite7-electron38-os最新款vite7.1+electron38.2+vue3 setup+pinia3+arcoDesign+echarts实战仿macOS/windows风格桌面os管理系统Exe模板。自研…

终于在vim中用上了molokai的炫酷色彩配置了(゚∀゚)

研究vim的vimrc的配置文件时,遇到很多的问题;我当时参考了:https://www.freecodecamp.org/news/vimrc-configuration-guide-customize-your-vim-editor/ 其中之一就是colorscheme, 看到大家的vim打开后色彩鲜亮养眼…

我是如何在Vim8.1中安装好的NERDTree插件的

用过vim的人都知道,在使用没有安装插件的vim的人,要寻找其他相关的文件是相当的不够直观的,需要首先在头脑里面有清晰的文件架构,然后还需要不停地切换,和vscode相比真是体验差了很多,如果你安装了NERDTree插件,…

Kafka监控工具 EFAK-AI 介绍

1.概述 在大数据与人工智能深度融合的新时代,Apache Kafka 已成为企业实时数据流处理的核心引擎。然而,随着业务规模的不断扩大,Kafka 集群的监控与运维复杂度也随之攀升——指标繁多、延迟难察、告警频繁,传统监控…

视频拍摄技巧 - 希区柯克变焦/滑动变焦 All In One

视频拍摄技巧 - 希区柯克变焦/滑动变焦 All In One 希区柯克变焦又叫做滑动变焦,是电影拍摄中一种常见的镜头技法。视频拍摄技巧 - 希区柯克变焦/滑动变焦 All In One 希区柯克变焦希区柯克变焦又叫做滑动变焦,是电影…

信息化说课-教学设计(6)

智慧康养中的"健康数据小哨兵"教学设计 一、教学基本信息项目 内容课程名称 《Python程序设计》授课学时 2课时授课类型 理实一体化课程授课地点 计算机机房授课班级 计算机应用技术专业一年级授课人数 30人…

记录:git

记录:Git .gitignore文件介绍一个纯文本文件,包含了项目中所有指定的文件和文件夹的列表,这些文件和文件夹是 Git 应该忽略和不追踪的一个 .gitignore 文件会被放在仓库的根目录下 使用文档/test/text.txt 或test/t…

P12012 [Ynoi April Fools Round 2025] 牢爱 题解

P12012 [Ynoi April Fools Round 2025] 牢爱 题解题目描述 给定长为 \(n\) 的序列 \(a\) ,接下来 \(m\) 次操作:1 l r :查询是否可以选出两个不交的非空下标集合 \(X,Y\subseteq\{l,\cdots,r\}\) ,且 \(\sum\limit…

实验1 现代C++编程初体验

任务1: 源代码1 #include <iostream>2 #include <string>3 #include <vector>4 #include <algorithm>5 template<typename T>6 void output(const T &c);7 8 void test1();9 void …

10.11总结

1.今天编写了一个学生错题管理程序 2.明天继续改进程序

2025年10月门窗十大品牌最新推荐榜单,十大品牌测评排名与选择指南

在当前的门窗行业中,消费者面临着诸多选择难题。一方面,市场上门窗产品质量参差不齐,部分厂家为降低成本,使用劣质型材和玻璃,导致门窗抗压、抗风压性能不足,使用一段时间后易出现变形、漏风漏水等问题,不仅影响…