Avalonia学习(二十)-登录界面演示

news2025/1/12 9:55:19

今天开始继续Avalonia练习。

本节:演示实现登录界面

在网上看见一个博客,展示Avalonia实现,仿照GGTalk,我实现了一下,感觉是可以的。将测试的数据代码效果写下来。主要是样式使用,图片加载方式。

只有前台代码

<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="using:LoginAvalonia.ViewModels"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
        x:Class="LoginAvalonia.Views.MainWindow"
        x:DataType="vm:MainWindowViewModel"
        Icon="/Assets/users2.png"
         Width="430"
        Height="340"
        CanResize="False" 
        WindowStartupLocation="CenterScreen"
        Title="LoginAvalonia">

    <Design.DataContext>
        <!-- This only sets the DataContext for the previewer in an IDE,
             to set the actual DataContext for runtime, set the DataContext property in code (look at App.axaml.cs) -->
        <vm:MainWindowViewModel/>
    </Design.DataContext>
  <Window.Styles >
    <Style Selector="TextBox.tb1">
      <Setter Property="Margin" Value="0,-40,0,0"/>
      <Setter Property="Height" Value="26"/>
      <Setter Property="Width" Value="250"/>
      <Setter Property="Watermark" Value="账号"/>
      <Setter Property="BorderBrush" Value="#80c0ff"/>
    </Style>
    <Style Selector="TextBox.tb2">
      <Setter Property="Margin" Value="0,35,0,0"/>
      <Setter Property="Height" Value="26"/>
      <Setter Property="Width" Value="250"/>
      <Setter Property="Watermark" Value="密码"/>
      <Setter Property="BorderBrush" Value="#80c0ff"/>
      <Setter Property="PasswordChar" Value="*"/>
    </Style>
    <!--######<TextBox标签>######-->


    <Style Selector="Image.img1">
      <Setter Property="Margin" Value="0,-250,0,0"/>
      <Setter Property="Width" Value="430"/>
    </Style>
    <Style Selector="Image.img2">
      <Setter Property="Margin" Value="0,-190,0,0"/>
      <Setter Property="Width" Value="73"/>
      <Setter Property="Height" Value="73"/>
    </Style>
    <!--######<Image标签>######-->


    <Style Selector="TextBlock.tbk1">
      <Setter Property="Margin" Value="5,5,0,0"/>
      <Setter Property="Foreground" Value="White"/>
    </Style>
    <Style Selector="TextBlock.tbk2">
      <Setter Property="Margin" Value="292,213,0,0"/>
      <Setter Property="Foreground" Value="#0c7ab9"/>
      <Setter Property="Cursor" Value="Hand"/>
    </Style>
    <Style Selector="TextBlock.tbk3">
      <Setter Property="Margin" Value="275,305,0,0"/>
      <Setter Property="Foreground" Value="#696969"/>
    </Style>
    <!--######<TextBlock标签>######-->



    <Style Selector="Button.bt1">
      <Setter Property="Margin" Value="100,195,0,0"/>
      <Setter Property="Width" Value="250"/>
      <Setter Property="Height" Value="40"/>
      <Setter Property="Background" Value="#407cff"/>
      <Setter Property="Foreground" Value="White"/>
      <Setter Property="FontSize" Value="17"/>
      <Setter Property="HorizontalContentAlignment" Value="Center"/>
      <Setter Property="VerticalContentAlignment" Value="Center"/>
    </Style>
    <!--######<Button标签>######-->


    <Style Selector="CheckBox.cbx1">
      <Setter Property="Margin" Value="89,105,0,0" />
      <Setter Property="BorderBrush" Value="#3c9fc5"/>
    </Style>
    <Style Selector="CheckBox.cbx2">
      <Setter Property="Margin" Value="190,105,0,0"/>
      <Setter Property="BorderBrush" Value="#3c9fc5"/>
    </Style>
    <!--######<CheckBox标签>######-->
  </Window.Styles>
  <StackPanel>
    <Border Background="White"
            BorderBrush="Gray"
            BorderThickness="1"
            Padding="0"
            Width="430"
            Height="340">
      <Grid>
        <Image Classes="img1" Source="avares://LoginAvalonia/Assets/image_sign.png" ></Image>
        <Image Classes="img2" Source="avares://LoginAvalonia/Assets/8.png" />
        <TextBlock Classes="tbk1">GGTalk 2020</TextBlock>
        <TextBlock Classes="tbk2">注册登录</TextBlock>
        <TextBlock Classes="tbk3">企业即时通讯系统</TextBlock>
        <TextBox Classes="tb1"/>
        <TextBox Classes="tb2"/>
        <CheckBox Classes="cbx2" >自动登录</CheckBox>
        <CheckBox Classes="cbx1" >记住密码</CheckBox>
        <Button Classes="bt1" >登录</Button>
      </Grid>
    </Border>
  </StackPanel>
</Window>

运行效果:

使用的图片:

1.

2.

3.

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

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

相关文章

移远通信推出两款Wi-Fi 7模组新品,赋能无线连接巅峰体验

​1月9日&#xff0c;在2024年国际消费电子产品展览会 (CES) 期间&#xff0c;全球领先的物联网整体解决方案供应商移远通信宣布&#xff0c;正式推出支持Wi-Fi 7技术的通信模组FGE576Q和FGE573Q &#xff0c;这两款模组将以前沿的Wi-Fi性能突破无线连接边界&#xff0c;为下一…

JVM工作原理与实战(十二):打破双亲委派机制-自定义类加载器

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、打破双亲委派机制的方法 二、自定义类加载器 1.Tomcat自定义类加载器案例 2.自定义类加载器详解 3.案例解析 总结 前言 JVM作为Java程序的运行环境&#xff0c;其负责解释和执…

探索未来餐饮:构建创新连锁餐饮系统的技术之旅

随着数字化时代的发展&#xff0c;连锁餐饮系统的设计和开发不再仅仅关乎订单处理&#xff0c;更是一场充满技术创新的冒险。在本文中&#xff0c;我们将深入研究连锁餐饮系统的技术实现&#xff0c;带你探索未来餐饮业的数字化美食之旅。 1. 构建强大的后端服务 在设计连锁…

windows安装Elasticsearch后使用ik分词器报错解决办法

最近在学习Elasticsearch&#xff0c;安装完成后下载了ik分词器压缩到plugins目录下启动es报错如下&#xff1a; java.security.AccessControlException: access denied (“java.io.FilePermission” “D:…\plugins\ik-analyzer\config\IKAnalyzer.cfg.xml” “read”)咋一看…

k8s的存储卷、数据卷

容器内的目录和宿主机目录进行挂载。 容器在系统上的生命周期是短暂的。 k8s用控制器创建的pod。delete相当于重启。容器的状态也会恢复到初始状态。一旦恢复到初始状态&#xff0c;所有的后天编辑的文件都会消失 容器和节点之间创建一个可以持久化保存容器内文件的存储卷。…

OpenCV-21方盒滤波和均值滤波

一、方和滤波 使用API --- boxFiter(src, ddepth, ksize[,dst[,anchor[, normalize[, borderType]]]])方盒滤波 方盒滤波的卷积核如下所示&#xff1a; --- normalize Ture时&#xff0c; a 1 / &#xff08;W*H&#xff09;滤波器的宽高 --- normalize False时&#xff…

【大数据OLAP引擎】StartRocks存算分离

存算分离的原因 降低存储成本&#xff1a;同样的存储大小对象存储价格只有SSD的1/10&#xff0c;所以号称存储成本降低80%不是吹的。 存算一体到存算分离 存算一体 作为 MPP 数据库的典型代表&#xff0c;StarRocks 3.0 版本之前使用存算一体 (shared-nothing) 架构&#xf…

mysql主从复制教程

1、介绍 1.1 是什么 主从复制&#xff0c;是用来建立一个和主数据库完全一样的数据库环境&#xff0c;称为从数据库 1.2 有什么用 数据备份&#xff1a;通过主从复制&#xff0c;可以将主数据库的数据复制到一个或多个从数据库中&#xff0c;以实现数据备份和灾难恢复。当主…

免费简单好用的 webshell 在线检测:支持 php、jsp、asp等多格式文件

话不多说&#xff0c;直接上图上链接&#xff1a;https://rivers.chaitin.cn/?share3d4f2e8aaec211eea5550242c0a8170c 还是比较好用的&#xff0c;支持 PHP、JSP 文件 webshell 检测&#xff0c;看官方解释文档&#xff0c;引擎使用静态文本特征、骨架哈希、静态语义分析、动…

【Github-Action】GithubAction 环境下,如何将临时生成的文件推送至指定分支。

通过这篇文章你可以掌握如何将github action 环境下临时生成的文件推送至指定分支&#xff0c;并且可以打开利用github开放的api做各种强大或有趣的事情的视野和思路。 如果你对github-action感兴趣&#xff0c;还可以看这篇文章&#xff0c; 这篇文章教会你如何开发Github Act…

多局域网UDP通信测试

今天遇到一个问题&#xff1a; 一台电脑同时连接A、B两个路由器的网络&#xff0c;同时分别收发各自局域网中的消息&#xff0c;是否可行&#xff1f; 理论上可以&#xff0c;测试一下吧 电脑同时连接两个网络 两个网络的网段分别为3和1 在同一个程序中使用两个网络连接的地…

计算机体系结构----计分板(scoreboard)算法

计分板算法简介 计分板记录着所有必要的信息&#xff0c;用来控制以下事情&#xff1a; 每条指令何时可以读取操作数并投入运行&#xff08;对应着RAW冲突的检测&#xff09;每条指令何时可以写入结果&#xff08;对应着WAR冲突的检测&#xff09;在计分板中&#xff0c;WAW冲…

css三大特性

css 三大特性 一、层叠性&#xff1a;css样式冲突采取原则&#xff08;后者覆盖前者&#xff09; 二、继承性&#xff1a;对于部分属性样式会有天生的继承 &#xff08;1&#xff09;字体系列属性 font-family&#xff1a;字体系列 font-weight&#xff1a;字体的粗细 fon…

TS 36.306 V12.0.0

​本文的内容主要涉及TS 36.306&#xff0c;版本是C00&#xff0c;也就是V12.0.0。

鸿蒙Harmony--状态管理器--双向同步@Link详解

你这一生最重要的责任&#xff0c;就是保护好自己脆弱的梦想&#xff0c;熬过被忽略的日子&#xff0c;就轮到你上场了。 如何解决大模型的「幻觉」问题&#xff1f; 目录 一&#xff0c;定义 二&#xff0c;装饰器使用规则说明 三&#xff0c;变量的传递/访问规则说明 四&…

web第一次作业

题1&#xff1a; <form action"#" method"post"><table><tr><td>用户名&#xff1a;</td><td><input type"text" name"UserName" maxlength"20" size"15"></td>…

Windows启动MongoDB服务报错(错误 1053:服务没有及时响应启动或控制请求)

问题描述&#xff1a;修改MongoDB服务bin目录下的mongod.cfg&#xff0c;然后在任务管理器找到MongoDB服务-->右键-->点击【开始】&#xff0c;启动失败无提示&#xff1a; 右键点击任务管理器的MongoDB服务-->点击【打开服务】&#xff0c;跳转到服务页面-->找到M…

C# 使用Fleck创建WebSocket服务器

目录 写在前面 代码实现 服务端代码 客户端代码 调用示例 写在前面 Fleck 是 C# 实现的 WebSocket 服务器&#xff0c;通过 WebSocket API&#xff0c;浏览器和服务器只需要做一个握手的动作&#xff0c;然后浏览器和服务器之间就形成了一条快速通道&#xff1b;两者之间…

机器学习周刊第二期:300个机器学习应用案例集

大家好 前文&#xff1a;机器学习项目精选 第一期 继续分享我最近看过并觉得非常硬核的资源&#xff0c;包括Python、机器学习、深度学习、大模型等等。 1、Python编程挑战 地址&#xff1a;https://github.com/Asabeneh/30-Days-Of-Python 30天Python编程挑战是一个逐步学…

漫画演绎策略设计模式

引言 本篇主要通过一小篇漫画的形式给大家讲讲策略模式&#xff0c;由于策略模式本身不是很难&#xff0c;这里就不花太多的言辞描述了&#xff0c;一起看漫画吧 普通设计 从前有一个妈妈&#xff0c;她有一个叛逆的儿子&#xff0c;妈妈每天除了上下班就是要教育儿子&#…