Avalonia学习(二十一)-自定义界面演示

今天开始继续Avalonia练习。

本节:自定义界面

在网上看见一个博客,根据需要演示一下。

前台代码

XML 复制代码
<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="using:WindowStyleAvalonia.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="WindowStyleAvalonia.Views.MainWindow"
        x:DataType="vm:MainWindowViewModel"
        Icon="/Assets/avalonia-logo.ico"
        Title="WindowStyleAvalonia">

    <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="Window">
      <Setter Property="ExtendClientAreaToDecorationsHint" Value="True"></Setter>
      <Setter Property="ExtendClientAreaChromeHints" Value="NoChrome"></Setter>
      <Setter Property="ExtendClientAreaTitleBarHeightHint" Value="-1"></Setter>
      <Setter Property="SystemDecorations" Value="None"></Setter>
      <Setter Property="CanResize" Value="False"></Setter>
      <Setter Property="Background">
        <Setter.Value>
          <SolidColorBrush Color="White" Opacity="0"></SolidColorBrush>
        </Setter.Value>
      </Setter>
      
    </Style>
  </Window.Styles>
  
</Window>

后台代码

cs 复制代码
using Avalonia.Controls;
using Avalonia.Input;
using System;

namespace WindowStyleAvalonia.Views
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            this.PointerPressed += MainWindow_PointerPressed;
        }

        private void MainWindow_PointerPressed(object? sender, PointerPressedEventArgs e)
        {
            if (e.Pointer.Type == PointerType.Mouse)
            {

                this.BeginMoveDrag(e);
            }
        }
    }
}

运行效果

另外推荐一个博文:

Avalonia 实现跨平台的视频聊天、屏幕分享(源码,支持Win、银河麒麟、统信UOS)-CSDN博客

相关推荐
深蓝海拓20 小时前
PySide6从0开始学习的笔记(二) 控件(Widget)之容器类控件
笔记·qt·学习·pyqt
_李小白20 小时前
【Android GLSurfaceView源码学习】第二天:GLSurfaceView深度分析
android·学习
秋深枫叶红21 小时前
嵌入式第三十七篇——linux系统编程——线程控制
linux·学习·线程·系统编程
猫天意21 小时前
【即插即用模块】AAAI2025 | 高频 + 空间感知!新 HS-FPN 让“极小目标”不再消失!SCI保二区争一区!彻底疯狂!!!
网络·人工智能·深度学习·学习·音视频
Voyager_421 小时前
算法学习记录17——力扣“股票系列题型”
学习·算法·leetcode
北极糊的狐21 小时前
三星 One UI 8 停止支持 三星Dex后的替代指南
ui
正经教主21 小时前
【Trae+AI】和Trae学习搭建App_2.1:第3章·手搓后端基础框架Express
人工智能·后端·学习·express
L.fountain21 小时前
图像自回归生成(Auto-regressive image generation)实战学习(二)
学习·数据挖掘·回归
元气满满-樱21 小时前
LNMP架构学习
android·学习·架构
狮智先生21 小时前
【编程实践】Windows + PySide6 + Matplotlib 绘图时 WinError 32 的完整排查与解决方案
windows·ui·个人开发·matplotlib·交通物流