Net跨平台UI框架Avalonia入门-资源和样式

news2024/10/1 9:33:30

Net跨平台UI框架Avalonia入门-资源和样式编写和使用

  • 资源和样式编写和使用
  • 样式(Styles)和资源(Resources)
    • 样式(Styles)
      • 样式定义
        • 定义的位置:
        • 定义内容:
      • 样式文件的定义和引用
    • 资源(Resources)
      • 资源的定义
      • 资源的使用
      • 资源字典的创建和引用
        • 创建资源字典
        • 资源字典引用

资源和样式编写和使用

在Avalonia中样式(Styles)和资源(Resources)是两个不同的内容,这跟WPF中不一样,WPF中样式属于资源的一种,而在Avalonia资源只能是各类颜色、笔刷、固定的属性等等,资源可以被样式引用,样式无法在资源中定义和使用。

样式(Styles)和资源(Resources)

样式(Styles)

样式定义

定义的位置:

Avalonia中 Style样式需要定义在Styles下面(<xxx.Styles>标签下或者xxxStyles.axaml样式文件),如下

<Window.Styles>中定义样式:

在这里插入图片描述

在样式文件中定义样式:

在这里插入图片描述

在资源字典中无法定义样式,否则会发生错误
在这里插入图片描述

定义内容:

定义一个样式

具体样式内容还是和WPF一样使用Setter,样式名称使用Selector来定义,具体名称="控件名.名称"

<Style Selector="TextBlock.h1">
      <Setter Property="FontSize" Value="24"/>
      <Setter Property="FontWeight" Value="Bold"/>
    </Style>

使用样式

使用Classes来引用样式,名称就是上面定义的名称

 <TextBlock Classes="h1" Text="TextBlock"/>

样式文件的定义和引用

右键项目,添加→新建项,选择Avalonia分类中的Styles项,添加一个样式文件
在这里插入图片描述

添加完文件,默认生成如下代码,Design.PreviewWith是样式文件中的一个设计器,可以在里面添加你写的样式对应的控件,使用样式进行实时预览

在这里插入图片描述

然后在样式文件中增加样式,如下,编写了一个Button的样式,然后在Design中增加一个Button,就可以在右侧设计器中看到效果

在这里插入图片描述
在这里插入图片描述

在其他文件中引用样式

直接在<xxxx.Styles>标签中添加StyleInclude进行引用,设置Source属性

 <StyleInclude Source="/AvaStyles.axaml"/>

在这里插入图片描述

资源(Resources)

资源的定义

资源一般在Resources下面定义(<xxx.Resources>标签,包括<Styles.Resources>,或者xxxResourceDictionary.axaml资源字典文件),主要定义颜色、笔刷、特殊的一些属性作为资源使用,资源的定义和WPF基本上差不多。

资源(Resources)可以在样式Styles中引用

<xxx.Resources>标签中定义

在这里插入图片描述
在这里插入图片描述

在资源字典中定义

在这里插入图片描述

资源的使用

与WPF一样,通过StaticResourceDynamicResource进行使用

 <Window.Resources>
    <SolidColorBrush x:Key="redBrush" Color="Red"/>
  </Window.Resources>
<Button Content="111"  Background="{DynamicResource redBrush}"/>
<Button Content="222" Grid.Column="1"  Background="{StaticResource redBrush}"/>

在这里插入图片描述

效果:
在这里插入图片描述

资源字典的创建和引用

创建资源字典

右键项目,添加→新建项,选择Avalonia分类中的Resource Dictionary项,添加一个样式文件

在这里插入图片描述

资源字典引用

资源字典在别的文件夹中引用需要在Resources标签下通过MergedDictionaries属性,使用ResourceInclude类来引用,示例如下:

 <Window.Resources>
    <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
        <ResourceInclude Source="/MyResourceDictionary.axaml"/>
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
    <SolidColorBrush x:Key="redBrush" Color="Red"/>
  </Window.Resources>

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

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

相关文章

微信小程序xr-frame后处理

前言&#xff1a;什么是后处理&#xff1f;&#xff08;详见&#xff1a;ThreeJS 后处理 - 掘金 (juejin.cn)&#xff09; 后处理就是对WebGLRenderer.render(scene, camera)的渲染2D图片进行处理。可以把多个后处理进行组合&#xff0c;按照顺序执行&#xff0c;每个处理过程…

新-git-gitee代码管理(管理)

git忽略文件失效 git rm -r --cached . //清除缓存 git add . //添加所有文件 git commit -m update .gitignore //提交更新.gitignoregit 提交的一些规范 开发git commit规范&#xff1a; git commit --fix我的问题feat&#xff1a;新功能 fix&#xff1a;BUG…

VMware16安装 CentOS7

目录 VM下载与安装 密钥 CentOS镜像下载 安装过程 问题 win11一点启动就蓝屏重启 系统安装 安装摘要 选择日期 软件选择-> 最小安装 安装位置 网络和主机名 开始安装 用户设置 完成 登录 xshell连接操作 登录成功 VM下载与安装 官网下载地址 下载 VMware Works…

恩智浦正式启动人工智能创新实践平台,为本地生态注入创新动能

中国天津——2023年5月19日——恩智浦半导体&#xff08;NXP Semiconductors N.V.&#xff0c;纳斯达克代码&#xff1a;NXPI&#xff09;今日宣布&#xff0c;设于天津的人工智能应用创新中心二期项目——人工智能创新实践平台&#xff08;以下称“创新实践平台”&#xff09;…

三、IOC容器(3)

一、IOC操作Bean管理&#xff08;外部属性文件&#xff09; 1.直接配置数据库信息 配置德鲁伊连接池引入德鲁伊连接池依赖jar包 <!--配置连接池--> <bean id"dataSource" class"com.alibaba.druid.pool.DruidDataSource"><property name&…

面了一位5年的测试,真的很失望......

最近看了很多简历&#xff0c;很多候选人年限不小&#xff0c;但是做的都是一些非常传统的项目&#xff0c;想着也不能通过简历就直接否定一个人&#xff0c;何况现在大环境越来 越难&#xff0c;大家找工作也不容易&#xff0c;于是就打算见一见。 在沟通中发现&#xff0c;由…

《HTTP权威指南 陈涓 赵振平》读书笔记

目录 第一章 HTTP概述 第二章 URL与资源 第三章 HTTP报文 第四章 连接管理 第一章 HTTP概述 1、POST和PUT的区别 POST&#xff1a;将客户端数据发送到一个服务器网关应用程序PUT&#xff1a;将来自客户端额数据存储到一个命名的的服务器资源中 2、HTTP报文&#xff1a;…

Windows下通过cwRsync备份到服务器服务器之间使用rsync备份传输

Windows下通过cwRsync备份到服务器&服务器之间使用rsync备份传输 Linux服务器配置Rsync服务端1、安装Rsync2、配置rsyncd.conf3、创建目录、密码文件并修改权限4、启动rsync服务 Windows配置cwRsync客户端1、下载并解压cwRsync客户端2、打开cmd&#xff0c;执行同步命令 Wi…

好程序员:一篇文章看懂JavaScript 学习路线!前端自学!

如果你是一名编程初学者&#xff0c;刚刚学完HTML和CSS&#xff0c;那就不得不接触JavaScript。今天&#xff0c;好程序员给大家分享一篇2023最新版&#xff0c;JavaScript学习路线。 1. HTML and CSS 语法、结构、响应式设计、引导 2. JavaScript语言基础 语法、数据、类型、…

Cloud Studio 高阶玩家:强大的 YAML 模板

Cloud Studio 高阶玩家&#xff1a;强大的 YAML 模板 1. 功能简介 编程免不了要写配置文件&#xff0c;怎么写配置也是一门学问。YAML 是专门用来写配置文件的语言&#xff0c;非常简洁和强大。 了解到一些用户在Cloud Studio开发项目的时候&#xff0c;环境上需要依赖一些组…

Java设计模式-策略模式

简介 在软件开发中&#xff0c;设计模式是为了解决常见问题而提供的一套可重用的解决方案。策略模式&#xff08;Strategy Pattern&#xff09;是其中一种常见的设计模式&#xff0c;它属于行为型模式。该模式的核心思想是将不同的算法封装成独立的策略类&#xff0c;使得它们…

软件测试项目测试报告总结

测试计划概念&#xff1a;就在软件测试工作实施之前明确测试对象&#xff0c;并且通过资源、时间、风险、测试范围和预算等方面的综合分析和规划&#xff0c;保证有效的实施软件测试。 需求挖掘的6个方面&#xff1a; 1、输入方面 2、处理方面 3、结果输出方面 4、性能需求…

蓝牙耳机怎么挑选?工程师盘点目前最值得入手的蓝牙耳机

蓝牙耳机已经成为手机标配&#xff0c;各大品牌也陆续加入蓝牙耳机行业&#xff0c;市场十分繁荣。我身为从业人员对整个行业有着深入的了解&#xff0c;考虑到很多朋友还不知道蓝牙耳机怎么挑选&#xff0c;我整理了目前最值得入手的蓝牙耳机&#xff0c;分别是&#xff1a; 1…

保护你的 shell脚本

什么是shell&#xff1f; shell 是一种脚本语言 脚本&#xff1a;本质是一个文件&#xff0c;文件里面存放的是 特定格式的指令&#xff0c;系统可以使用脚本解析器 翻译或解析 指令 并执行&#xff08;它不需要编译&#xff09; shell 既是应用程序 又是一种脚本语言&#xff…

1. python学习环境准备

文章目录 前言本专栏文章旨在记录《Python编程从入门到实践》一书的学习笔记。 一、编程环境二、使用步骤1.修改默认python版本2.终端退出python解释器3.编写.py文件4.运行.py文件 三、Python帮助文档的使用总结 前言 本专栏文章旨在记录《Python编程从入门到实践》一书的学习…

N9305语音芯片在新能源车充电桩上的方案

语音芯片技术作为近年来蓬勃发展的人工智能领域的重要组成部分&#xff0c;正在被广泛运用于诸多领域&#xff0c;并为人类生活带来了很多便利和创新。其中&#xff0c;新能源充电桩的运用就是一个很好的例子。随着电动汽车的普及&#xff0c;充电桩的需求量不断增加。为了提高…

BGP路由选择实验

测试环境拓扑图 每一种规则测试完后记得恢复初始状态&#xff01;&#xff01; 各设备BGP Router_ID为loopback 0的地址。 AR1 配置 [V200R003C00] #sysname AR1 # interface GigabitEthernet0/0/0ip address 10.1.12.1 255.255.255.0 # interface LoopBack0ip address 1.1.…

远程桌面连接怎么使用?

远程桌面连接是一种远程控制计算机的技术&#xff0c;它允许用户通过Internet或局域网远程访问另一台计算机的桌面界面。使用远程桌面连接技术&#xff0c;可以帮助用户在家里或在外出时访问工作计算机&#xff0c;或者在不同的地方协作完成任务。在本文中&#xff0c;我们将介…

k8s 基于MutatingWebhookConfiguration实现node超卖和sidecar注入

k8s 基于MutatingWebhookConfiguration实现node超卖和sidecar注入 源码在:https://github.com/Seaiii/MutatingWebhook我写了几个脚本&#xff0c;可以直接运行。 一、MutatingWebhookConfiguration原理 MutatingWebhookConfiguration 是 Kubernetes 中的一种资源对象&#…

【代码随想录】刷题Day31

1.分发饼干 455. 分发饼干 贪心的思路就是&#xff1a;小的饼干尽量去匹配胃口小的孩子&#xff0c;这样才能实现尽可能多孩子吃到。 那么代码就很好写了&#xff1a; 1.排序g和s&#xff0c;这样方便查找小的数 2.饼干的位置不停遍历&#xff0c;对应我们需要一个ret代表当前…