使用控制台搭建avalonia开发

前提

.net 8
rider
AvaloniaRider

创建控制台项目

在这里插入图片描述

安装依赖包

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net8.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="Avalonia" Version="11.1.1" />
        <PackageReference Include="Avalonia.Desktop" Version="11.1.1" />
        <!--只有DEBUG条件下才会引入Avalonia.Diagnostics-->
        <PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.1.1"/>
    </ItemGroup>

</Project>

新建app.cs

using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;

namespace AvaloniaStu01;

public class App : Application
{
    public override void Initialize()
    {
    }
    
    public override void OnFrameworkInitializationCompleted()
    {
        if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
        {
            desktop.MainWindow = new MainWindow();
        }

        base.OnFrameworkInitializationCompleted();
    }

}

新建MainWindow.cs

using Avalonia.Controls;

namespace AvaloniaStu01;

public class MainWindow : Window
{
    public MainWindow()
    {
        this.Width = 350;
        this.Height = 350;
        this.Title = "Avalonia布局";
        this.Content = " Welcome to Avalonia!";
    }
}

修改program.cs

using Avalonia;

namespace AvaloniaStu01;

class Program
{
    /// <summary>
    /// 初始化代码。在调用 AppMain 之前,
    /// 不要使用任何 Avalonia、第三方应用程序接口或任何依赖 SynchronizationContext 的代码:
    /// 因为一切都还没有初始化,可能会出错。
    /// </summary>
    /// <param name="args"></param>
    [STAThread]
    public static void Main(string[] args)
    {
        BuildAvaloniaApp()
            .StartWithClassicDesktopLifetime(args);
    }
    
    /// <summary>
    /// 构建Avalonia应用
    /// </summary>
    /// <returns></returns>
    static AppBuilder BuildAvaloniaApp()
    {
        return AppBuilder.Configure<App>()
            .UsePlatformDetect()
            .LogToTrace();
    }
}

启动项目
在这里插入图片描述
可以将输出修改为winexe

<PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

UsePlatformDetect:静态扩展方法,用于加载平台需要的一些基础内容,如渲染等。位于Avalonia.Desktop.dll类库中

安装主题和字体

<PackageReference Include="Avalonia.Themes.Fluent" Version="11.1.1"/>
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.1.1"/>

修改Program.cs

/// <summary>
/// 构建Avalonia应用
/// </summary>
/// <returns></returns>
static AppBuilder BuildAvaloniaApp()
{
    return AppBuilder.Configure<App>()
        .UsePlatformDetect()
        .WithInterFont()
        .LogToTrace();
}

修改App.cs

public override void Initialize()
{
    this.Styles.Add(new FluentTheme());
}

在这里插入图片描述

WithInterFont:静态扩展方法,用于加载字体的相关处理,位于Avalonia.Fonts.Inter.dll库中

一般windows下还需要一个app.manifest

<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <!--
  该清单仅用于 Windows。请勿删除,否则可能会导致窗口透明度和嵌入式控件出现问题。
  https://learn.microsoft.com/zh-cn/windows/win32/sbscs/application-manifests
  -->
  <assemblyIdentity version="1.0.0.0" name="AvaloniaLayout.Desktop"/>

  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <!--
      此应用程序已在下列 Windows 版本上进行过测试版本的列表。取消注释相应元素Windows 将自动选择最兼容的环境。
      -->

      <!-- Windows 10 -->
      <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
    </application>
  </compatibility>
</assembly>

修改csproj

<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
<ApplicationManifest>app.manifest</ApplicationManifest>
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>

接入xaml界面

这样写代码太费事了,可以使用xml格式的代码构建页面
新建App.axaml

<Application xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             x:Class="AvaloniaStu01.App"
             RequestedThemeVariant="Dark">
    <!-- "Default" ThemeVariant follows system theme variant. "Dark" or "Light" are other available options. -->

    <Application.Styles>
        <FluentTheme />
    </Application.Styles>
</Application>

修改app.cs为App.axaml.cs,写成部分类

public partial class App : Application

启动
在这里插入图片描述
MainWindow类似
MainWindow.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"
        mc:Ignorable="d" 
        d:DesignWidth="400" 
        d:DesignHeight="400"
        x:Class="AvaloniaStu01.MainWindow"
        Width="350"
        Height="450"
        Title="Avalonia布局">
    Welcome to Avalonia!
</Window>

MainWindow.axaml.cs

using Avalonia.Controls;

namespace AvaloniaStu01;

public partial class MainWindow : Window
{
    public MainWindow()
    {
    	InitializeComponent();
    }
}

在这里插入图片描述

参考

https://roll.sohu.com/a/722494089_121124363

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Avalonia是一个**跨平台的UI框架,用于创建桌面应用程序**。 以下是一些关于Avalonia的基本信息和学习资源: 1. **什么是Avalonia?**:Avalonia是一个基于WPF XAML的开源UI框架,它允许开发使用.NET构建跨平台的桌面应用程序Avalonia支持多种操作系统,包括Windows、Linux和macOS。 2. **准备工作**:在开始使用Avalonia之前,你需要安装相应的开发环境,并配置项目。这通常包括安装.NET SDK和Avalonia工具包。 3. **创建第一个Avalonia应用程序**:你可以通过官方文档或相关教程来创建你的第一个Avalonia应用,这将帮助你理解基本的应用程序结构和开发流程。 4. **XAML基础**:XAML是一种用于定义用户界面的语言,你可以学习如何使用XAML来创建界面布局和实现数据绑定。 5. **控件和样式**:Avalonia提供了丰富的控件库,你可以学习如何使用这些控件以及如何通过样式和模板来自定义它们的外观。 6. **MVVM模式**:MVVM(Model-View-ViewModel)是一种设计模式,用于分离应用程序的业务逻辑和界面表示。学习MVVM将有助于你构建可维护和可测试的应用程序。 7. **导航和多窗口**:了解如何在Avalonia中进行窗口导航和管理多个窗口,这对于构建复杂的桌面应用程序非常重要。 8. **打包和发布应用程序**:最后,你需要学习如何将你的Avalonia应用程序打包和发布,以便用户可以在他们的计算机上安装和使用你的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

假装我不帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值