From 7247c81876074f44e01adc43237bf1974128fef1 Mon Sep 17 00:00:00 2001 From: zzzdajb <122362831+zzzdajb@users.noreply.github.com> Date: Sun, 27 Apr 2025 19:37:51 +0800 Subject: [PATCH] Add Translation For Test-Drive&Overview --- .../test-drive/add-some-layout.mdx | 81 ++++++++++ .../test-drive/create-a-project.mdx | 142 ++++++++++++++++++ .../get-started/test-drive/introduction.mdx | 54 +++++++ .../get-started/test-drive/main-window.mdx | 129 ++++++++++++++++ .../test-drive/response-to-an-event.mdx | 105 +++++++++++++ .../test-drive/the-design-preview.mdx | 54 +++++++ .../current/overview/supported-platforms.md | 105 +++++++++++++ .../current/overview/what-is-avalonia.md | 93 ++++++++++++ 8 files changed, 763 insertions(+) create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/get-started/test-drive/add-some-layout.mdx create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/get-started/test-drive/create-a-project.mdx create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/get-started/test-drive/introduction.mdx create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/get-started/test-drive/main-window.mdx create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/get-started/test-drive/response-to-an-event.mdx create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/get-started/test-drive/the-design-preview.mdx create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/overview/supported-platforms.md create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/overview/what-is-avalonia.md diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/get-started/test-drive/add-some-layout.mdx b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/get-started/test-drive/add-some-layout.mdx new file mode 100644 index 000000000..11c8e1672 --- /dev/null +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/get-started/test-drive/add-some-layout.mdx @@ -0,0 +1,81 @@ +--- +id: add-some-layout +title: 添加一些Layout +--- + +import useBaseUrl from '@docusaurus/useBaseUrl'; +import StackPanelZonesDiagram from '/img/get-started/test-drive/stackpanel-zones.png'; + +Avalonia 提供了一系列内置控件来帮助您布局应用程序的视觉元素。在本页面中,您将了解如何使用其中部分布局控件。 + +当前阶段,您的应用程序主窗口内容区域仅包含一个按钮。 + +实际上,Avalonia 的 `Window` 在内容区域仅允许放置一个控件。要展示多个视觉元素,必须使用允许在其内容区域包含多个控件的布局控件。 + +## StackPanel + +`StackPanel` 控件按照 XAML 中定义的顺序排列控件序列。默认采用垂直堆叠布局,但可以通过 `Orientation` 属性更改为水平布局。 + + + +```xml + + 1 + 2 + +``` + +## TextBlock + +`TextBlock` 控件支持对文本内容进行丰富的样式设置。 + +在现有示例基础上,添加如下 `StackPanel`(包含原有的 `Button` XAML 代码): + +```xml + + + + + + + +// highlight-start + + + + + + + + + // highlight-end + +``` + + + +:::info +您可以通过[此参考文档](../../reference/controls/layout-controls.md)探索 Avalonia 的其他布局控件。 +::: + +在下一页中,我们将在窗口中部添加输入控件。 \ No newline at end of file diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/get-started/test-drive/create-a-project.mdx b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/get-started/test-drive/create-a-project.mdx new file mode 100644 index 000000000..e84144a42 --- /dev/null +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/get-started/test-drive/create-a-project.mdx @@ -0,0 +1,142 @@ +--- +id: create-a-project +title: 创建并运行一个项目 +--- + +import useBaseUrl from '@docusaurus/useBaseUrl'; + +import VsFindAvaloniaTemplateScreenshot from '/img/get-started/test-drive/vs-find-avalonia-template-screenshot.png'; +import VsNewAvaloniaProjectScreenshot from '/img/get-started/test-drive/vs-new-avalonia-project-screenshot.png'; +import RiderRunScreenshot from '/img/get-started/test-drive/rider-toolbar-run.png'; +import InitialWindowScreenshot from '/img/get-started/test-drive/initial-window.png'; + +import vscode1 from '/img/get-started/test-drive/vscode-command-new-project.png'; +import vscode2 from '/img/get-started/test-drive/vscode-select-project-template.png'; +import vscode3 from '/img/get-started/test-drive/vscode-name-new-project.png'; +import vscode4 from '/img/get-started/test-drive/vscode-create-project.png'; +import vscode6 from '/img/get-started/test-drive/vscode-select-csharp.png'; +import vscode7 from '/img/get-started/test-drive/vscode-launch-app.png'; +import vscode8 from '/img/get-started/test-drive/vscode-app-running.png'; + + +## 创建项目 + +我们将使用 MVVM 模式的 Avalonia 模板:`Avalonia MVVM Application`(CLI 中为 `avalonia.mvvm`)。 + + + + +1. 在 Rider 启动界面选择 **New Solution** 打开新建解决方案向导。若已安装 [Avalonia 模板](../install.md),您将看到三个选项: + * **Avalonia .NET App:** 使用代码隐藏(code-behind)模式的桌面应用模板(支持 Windows、macOS 和 Linux) + * **Avalonia .NET MVVM App:** 使用 MVVM 模式(默认集成 RxUI)的桌面应用模板(支持 Windows、macOS 和 Linux) + * **Avalonia Cross-Platform Application:** 全平台应用模板(支持 Windows、macOS、Linux、iOS、Android 和 WASM),需要额外安装工作负载 + +2. 在侧边栏中选择 `Avalonia .NET MVVM App` + +3. 在 **Solution Name** 字段输入 `GetStartedApp` +4. 点击 **Create** + +模板将自动创建新的解决方案和项目。 + + + + + +- 在 **Visual Studio** 中点击 **Create a new project** +- 在搜索框输入 `Avalonia` +- 选择 **Avalonia Application** 然后点击 **Next** + + + +- 将项目命名为 `GetStartedApp`,点击 **Create** + +- 在目标平台选择界面点击 **Desktop** 然后点击 **Next** + +- 在设计模式选择界面点击 **ReactiveUI** 然后点击 **Create** + +模板将创建新解决方案和两个项目。`GetStartedApp` 是跨平台共享的主项目,`GetStartedApp.Desktop` 是桌面平台的专用项目。 + + + + + + * 使用 `⇧ ⌘ P` 打开命令面板,输入 ".NET" 并选择 **.NET: New Project** 命令 + + * 选择 **Avalonia MVVM app** 模板 + + * 输入项目名称 `GetStartedApp` 并回车 + + * 选择项目存储路径后点击 **Create project** + + + +运行命令: + +```bash title='Bash' +dotnet new avalonia.mvvm -o GetStartedApp +``` + +该命令将创建名为 `GetStartedApp` 的新项目文件夹。 + + + +## 运行项目 + +现在可以运行项目了! + + + + +点击 Rider 工具栏中的 **Run** 按钮: + + + + + + + 右键单击 `GetStartedApp.Desktop` 项目并选择 **Set as Startup Project** + + 按 `F5` 运行项目 + + + + * 按 `F5` 运行项目,选择 `C#` 调试器 + + * 选择 **C#: GetStartedApp Demo** 启动带调试器的应用 + + + +进入 `GetStartedApp` 目录并运行: + +```bash title='Bash' +dotnet run +``` + + + +解决方案将自动构建并运行。 + +现在您已经成功运行了第一个 Avalonia 应用程序! + + diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/get-started/test-drive/introduction.mdx b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/get-started/test-drive/introduction.mdx new file mode 100644 index 000000000..f69d53ccc --- /dev/null +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/get-started/test-drive/introduction.mdx @@ -0,0 +1,54 @@ +--- +id: introduction +title: 入门 +--- + +import useBaseUrl from '@docusaurus/useBaseUrl'; + +您可以通过本节快速开始使用 Avalonia。我们将通过一个简单的教程示例,循序渐进地介绍 Avalonia 的核心概念和技术。 + +即使您此前没有 Avalonia 或其他 XAML 框架的使用经验,也可以轻松学习本教程内容。 + +点击下一步按钮开始旅程。 + +:::info +如果您是熟悉 XAML 和 Avalonia 项目创建的开发者,可以直接跳转到 [基础章节](../../basics) 或查阅我们的 [实战指南](../../guides)。 +::: + +## 先决条件 + +### 安装项目模板 + +开始前请确保已安装 [Avalonia 项目模板](../install.md): + +```bash title='Bash' +dotnet new install Avalonia.Templates +``` + + + + [JetBrains Rider](https://www.jetbrains.com/lp/rider-avalonia/) 为 Avalonia XAML 提供原生支持,无需额外插件即可获得完整的开发体验。 + + 如需增强 XAML 实时预览功能,建议安装 Avalonia Rider 插件。 + + +``` + +- 在 Debug 模式下运行应用程序并点击 Calculate 按钮 + + + + + + 您应该在 Debug 的输出窗口中看到如下结果: + + + + + 您应该在 Debug 的输出窗口中看到如下结果: + + + + + + +在下一页,您将了解如何使用代码后置在运行时读取和修改 Avalonia 控件的属性。 \ No newline at end of file diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/get-started/test-drive/the-design-preview.mdx b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/get-started/test-drive/the-design-preview.mdx new file mode 100644 index 000000000..34c9af81b --- /dev/null +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/get-started/test-drive/the-design-preview.mdx @@ -0,0 +1,54 @@ +--- +id: the-design-preview +title: 设计预览 +--- + +import useBaseUrl from '@docusaurus/useBaseUrl'; + +在本页面中,您将探索`Window`的属性,并通过其中部分属性在预览窗格中调整`Window`的显示尺寸。 + +首先观察``标签的XAML代码,其结构如下: + +```xml + +``` + +`Window`标签首先定义了Avalonia使用的XML命名空间。其中'x'、'd'和'mc'是命名空间别名。 + +设计命名空间'd'允许设置设计时属性`d:DesignWidth`和`d:DesignHeight`。在上述代码示例中,这些属性值使预览界面呈现出类似移动设备(竖屏方向)的显示效果。 + +```xml + +``` + +设置这些属性后,窗口的预览效果如下所示: + + + +在下一页中,您将学习如何通过响应`Button`的`Click`事件为应用程序添加交互功能。 diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/overview/supported-platforms.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/overview/supported-platforms.md new file mode 100644 index 000000000..828569efa --- /dev/null +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/overview/supported-platforms.md @@ -0,0 +1,105 @@ +--- +id: supported-platforms +title: 平台支持 +--- + +Avalonia 应用程序可为以下平台开发: + +| 平台 | 支持情况 | +|---------------|------------| +| `Windows` | ✔️ | +| `macOS ` | ✔️ | +| `Linux` | ✔️ | +| `iOS` | ✔️ | +| `Android` | ✔️ | +| `WebAssembly` | ✔️ | + +## Windows + +* Windows 8.1 +* Windows 10 +* Windows 11 + +虽然 Avalonia 应用程序可以在 Windows 7 上成功运行,但我们对这个旧平台仅提供有限支持,不再针对 Windows 7 特有的问题进行 bug 修复。 + +## macOS + +* macOS 10.14 (Mojave) +* macOS 10.15 (Catalina) +* macOS 11 (Big Sur) +* macOS 12 (Monterey) +* macOS 13 (Ventura) +* macOS 14 (Sonoma) +* macOS 15 (Sequoia) + +Avalonia 也支持 macOS 10.13 (High Sierra),但我们正在迁移至 Metal GPU API(当前默认禁用),计划在后续次要更新中启用该功能。 + +:::important +您可以在 Windows、macOS 和 Linux 系统上开发 macOS 应用程序。如果需要对 macOS 应用进行签名和公证以便分发,则需要安装 XCode 的 Mac 设备。 +::: + +## Linux + +* Debian 9+ +* Ubuntu 16.04+ +* Fedora 30+ + +只要 Linux 发行版支持 .NET SDK 并具备 X11 或 framebuffer 能力,Avalonia 即可稳定运行。虽然我们官方支持 Debian 9+、Ubuntu 16.04+ 和 Fedora 30+,但许多其他发行版也能无障碍运行 Avalonia 应用程序。我们持续努力确保广泛的 Linux 兼容性。 + +对于拥有[支持协议](https://avaloniaui.net/support)的客户,我们提供更广泛的 Linux 发行版覆盖,并可协助满足特定发行版需求。Wayland 支持目前处于私有预览阶段,将在后续版本中正式发布。 + +WSL 2 发行版同样受支持,但需单独安装 `libice6`、`libsm6` 和 `libfontconfig1` 依赖项。 + +:::info +Skia 基于 glibc 2.17 构建。如果您的发行版使用其他库,需在 [SkiaSharp](https://github.com/mono/SkiaSharp) 自行构建 libSkiaSharp.so。您也可访问 SkiaSharp 主页获取支持版本的详细信息。 +::: + +## iOS + +* iOS 13 +* iOS 14 +* iOS 15 +* iOS 16 +* iOS 17 +* iOS 18 + +:::note +iOS 支持需要 .NET 7。 +::: + +## Android + +| 名称 | 版本号 | API 级别 | +|---------------------|---------|-----| +| Android Lollipop | 5.0 | 21 | +| Android Lollipop | 5.1 | 22 | +| Android Marshmallow | 6.0 | 23 | +| Android Nougat | 7.0 | 24 | +| Android Nougat | 7.1 | 25 | +| Android Oreo | 8.0 | 26 | +| Android Oreo | 8.1 | 27 | +| Android Pie | 9 | 28 | +| Android 10 | 10 | 29 | +| Android 11 | 11 | 30 | +| Android 12 | 12 | 31 | +| Android 12L | 12.1 | 32 | +| Android 13 | 13 | 33 | +| Android 14 | 14 | 34 | +| Android 15 | 15 | 35 | +| Android 16 | 16 | 36 | + +:::note +Android 支持需要 .NET 7。 +::: + +## WebAssembly(浏览器) +从技术上讲,任何完整支持 WebAssembly 的浏览器均可运行 - 详见 https://caniuse.com/wasm。 + +为获得最佳性能和支持,我们推荐使用最新版本的 Chrome 或 Safari。 + +:::note +浏览器支持需要 .NET 7。从 11.0.6 版本开始,我们推荐使用 .NET 8。 +::: + +## 其他平台支持 +Avalonia 也支持 Tizen 和 tvOS,但这些支持由社区提供。 \ No newline at end of file diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/overview/what-is-avalonia.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/overview/what-is-avalonia.md new file mode 100644 index 000000000..b68f43ec5 --- /dev/null +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/overview/what-is-avalonia.md @@ -0,0 +1,93 @@ +--- +id: what-is-avalonia +title: Avalonia是什么? +--- + +import AvaloniaArchitecture from '/img/overview/Architecture.png'; +import MauiComparision from '/img/overview/MAUI-Comparision.png'; + +Avalonia 是一个开源跨平台 UI 框架,允许开发者使用 .NET 为 Windows、macOS、Linux、iOS、Android 和 WebAssembly 创建应用程序。 + +它使用自研的渲染引擎绘制 UI 控件,确保在所有支持平台上呈现一致的外观和行为。这意味着开发者可以共享 UI 代码,并保持统一的用户体验,而无需考虑目标平台差异。 + +

+ +## Avalonia 适合哪些开发者? + +Avalonia 适合希望实现以下目标的开发者: + +* 使用 XAML 和 C# 编写跨平台应用,基于单一共享代码库 +* 在多个平台间共享 UI、布局和设计 +* 跨平台共享代码、测试和业务逻辑 + +## Avalonia 工作原理 +Avalonia 通过与传统跨平台框架不同的独特方法,统一桌面端、移动端和 Web 平台。不同于封装原生 UI 控件的方案,Avalonia 实现了自研的跨平台渲染引擎,确保所有支持平台上的像素级一致性。 + +### 架构概述 +Avalonia 基于 .NET Standard 2.0 构建,可运行在任何支持 .NET 的平台上。框架包含以下关键层级: + +#### 核心平台无关层 +框架大部分功能位于平台无关的核心层,负责处理: + +* UI 控件与布局系统 +* 可视化树管理 +* 样式系统 +* 数据绑定 +* 输入处理 +* 动画框架 + +该核心层完全与平台无关,意味着其行为在不同操作系统和设备上完全一致。 + +#### 渲染引擎 +不同于依赖原生 UI 控件的框架,Avalonia 使用基于 Skia 或 Direct2D 的自研渲染引擎。这种设计带来以下优势: + +* 应用程序在不同平台具有完全一致的外观和行为 +* 自定义控件和视觉效果只需实现一次即可全平台生效 +* 框架不受平台特定 UI 能力的限制 + +#### 平台集成层 +Avalonia 只需极少的平台特定代码即可集成到各支持平台。该层负责: + +* 窗口管理 +* 输入事件处理 +* 剪贴板操作 +* 原生对话框 +* 硬件加速 +* 平台特性支持 + +#### 运行时环境 +Avalonia 应用程序可运行在 .NET Core 或 Mono 等 .NET 运行时环境。 + +#### 与原生方案的对比 +与 .NET MAUI 等封装原生 UI 控件的框架不同,Avalonia 采用独特架构: + +

+ +这种架构差异带来以下优势: + +* 跨平台行为一致性 +* 像素级完美渲染 +* 完整掌控 UI 技术栈 +* 简化的平台支持 +* 降低维护成本 +* 在资源受限设备上性能更优 + +### 原生平台集成 + +尽管使用自研渲染引擎,Avalonia 仍能无缝集成原生平台能力: + +* **Windows**:支持 Win32 API 和现代 Windows 特性 +* **Linux**:兼容 X11、Wayland 和帧缓冲渲染 +* **macOS**:集成 Cocoa 和平台服务 +* **移动端**:提供原生生命周期管理和平台集成 +* **Web**:通过 WebAssembly 运行并实现完整浏览器集成 + +### 平台支持要求 +Avalonia 对平台的核心要求仅包含两项基础能力: + +1. 屏幕像素绘制能力 +2. 输入事件接收能力 + +这种极简要求使得 Avalonia 能够支持从桌面操作系统到嵌入式设备,甚至 VNC 服务器等特殊平台的广泛场景。 + +这种架构使 Avalonia 能够践行"一次编码,无限可能"的理念,同时在关键领域保持高性能和原生平台集成能力。 \ No newline at end of file