本文档概述了v2rayN应用程序的用户界面结构、组件和交互模式。重点介绍了UI架构、布局选项、关键UI组件以及跨平台实现。有关服务器管理UI的特定信息,请参阅服务器管理。有关设置界面的详细信息,请参阅设置界面。
v2rayN在其UI组件中实现了模型-视图-视图模型(MVVM)模式。该应用程序提供不同的布局选项,并同时支持Windows(使用WPF)和跨平台(使用Avalonia)的实现。
来源: v2rayN/v2rayN/Views/MainWindow.xaml.cs15-41 v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs19-44
主窗口作为应用程序的主要容器,负责承载所有UI组件。它包含顶部的菜单系统、底部的状态栏以及根据所选布局显示各种视图的内容区域。
主窗口初始化不同的视图(配置文件、消息、Clash代理、Clash连接),并处理关键用户交互,包括键盘快捷键和窗口状态管理。
来源: v2rayN/v2rayN/Views/MainWindow.xaml1-31 v2rayN/v2rayN/Views/MainWindow.xaml299-425 v2rayN/v2rayN.Desktop/Views/MainWindow.axaml1-24 v2rayN/v2rayN.Desktop/Views/MainWindow.axaml127-166
v2rayN支持三种不同的主UI布局方向,允许用户根据自己的偏好自定义界面。
| 布局 | 描述 | 网格配置 |
|---|---|---|
| 水平 | 左侧为配置文件视图,右侧为标签页视图 | 两列,带分隔符 |
| 纵向 | 上方为配置文件视图,下方为标签页视图 | 两行,带分隔符 |
| Tab键 | 所有视图均在一个标签式界面中 | 单标签控件,带左侧标签 |
布局由用户配置中的MainGirdOrientation设置决定,并影响主UI组件的排列方式。
来源: v2rayN/v2rayN/Views/MainWindow.xaml.cs42-68 v2rayN/v2rayN/Views/MainWindow.xaml304-421 v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs45-72 v2rayN/v2rayN.Desktop/Views/MainWindow.axaml129-165
配置文件视图是管理服务器配置的主要界面。它显示服务器配置文件的列表,并允许用户执行选择、编辑、测试和删除服务器等操作。
消息视图显示系统日志、通知和信息性消息。它帮助用户解决问题和监控应用程序事件。
为了集成Clash核心,v2rayN提供了两个专用视图
这些视图仅在启用Clash功能时显示(使用sing-box核心时)。
来源: v2rayN/v2rayN/Views/MainWindow.xaml.cs42-68 v2rayN/v2rayN/Views/MainWindow.xaml304-421 ServiceLib/ViewModels/MainWindowViewModel.cs569-576
v2rayN的菜单系统提供了对所有主要应用程序功能的访问。它被实现为主窗口顶部的工具栏,带有用于不同功能类别的下拉菜单。
主菜单类别包括
| 菜单 | 目的 | 关键函数 |
|---|---|---|
| 服务器 | 服务器管理 | 添加/编辑各种服务器类型,通过剪贴板/扫描导入 |
| 订阅 | 订阅管理 | 配置订阅,更新订阅 |
| 设置 | 应用程序设置 | 配置选项,路由,DNS,热键,区域预设 |
| 重新加载 | 核心重新加载 | 重新加载核心配置和连接 |
| 检查更新 | 更新 | 检查应用程序和核心更新 |
| 帮助 | 文档 | 访问网站和文档 |
| 推广 | 宣传内容 | 访问宣传内容 |
| 关闭/退出 | 关闭应用程序 | 最小化到托盘或退出应用程序 |
菜单实现包括命令绑定到视图模型,以执行相应的操作。
来源: v2rayN/v2rayN/Views/MainWindow.xaml38-298 v2rayN/v2rayN/Views/MainWindow.xaml.cs71-108 v2rayN/v2rayN.Desktop/Views/MainWindow.axaml25-122 v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs74-111 ServiceLib/ViewModels/MainWindowViewModel.cs11-63 ServiceLib/ViewModels/MainWindowViewModel.cs76-207
状态栏提供有关应用程序状态的实时信息,并允许快速访问常用操作。它显示
来源: v2rayN/v2rayN/Views/MainWindow.xaml301 v2rayN/v2rayN.Desktop/Views/MainWindow.axaml125 ServiceLib/ViewModels/StatusBarViewModel.cs9-507
v2rayN提供了两种UI实现来支持不同的平台
两种实现都遵循相同的MVVM架构,并共享ServiceLib项目的ViewModels。
| 功能 | WPF (Windows) | Avalonia (跨平台) |
|---|---|---|
| 框架 | Windows Presentation Foundation | Avalonia UI框架 |
| Material Design | 使用MaterialDesignThemes.Wpf | 使用Avalonia.MaterialDesign |
| 通知 | 使用Snackbar | 使用WindowNotificationManager |
| 系统集成 | 更深入的Windows集成 | 平台无关的方法 |
| 快捷键 | 完整的全局热键支持 | 在非Windows平台上有限支持 |
| UI文件 | .xaml文件 | .axaml文件 |
来源: v2rayN/v2rayN/Views/MainWindow.xaml.cs1-470 v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs1-505 ServiceLib/ViewModels/MainWindowViewModel.cs1-615 ServiceLib/ViewModels/StatusBarViewModel.cs1-507
v2rayN 的 UI 交互遵循清晰的模式,利用 MVVM 架构。
来源:v2rayN/v2rayN/Views/MainWindow.xaml.cs146-264 ServiceLib/ViewModels/MainWindowViewModel.cs235-336
v2rayN 为窗口状态实现了特殊处理,以支持最小化到托盘、恢复和正确的应用程序关闭。
来源:v2rayN/v2rayN/Views/MainWindow.xaml.cs377-442 v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs407-477
v2rayN 用户界面是一个全面、灵活的系统,支持多种布局方向和平台。它遵循 MVVM 模式来实现关注点的清晰分离,并通过其菜单系统、视图和状态栏提供广泛的功能。
UI 设计旨在适应性和响应性,支持不同的屏幕尺寸和方向。跨平台实现确保了在 Windows、Linux 和 macOS 上提供一致的体验,同时在适当的情况下利用特定于平台的特性。
来源: v2rayN/v2rayN/Views/MainWindow.xaml.cs1-470 v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs1-505 ServiceLib/ViewModels/MainWindowViewModel.cs1-615 ServiceLib/ViewModels/StatusBarViewModel.cs1-507