菜单

用户界面

相关源文件

本文档概述了v2rayN应用程序的用户界面结构、组件和交互模式。重点介绍了UI架构、布局选项、关键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视图

为了集成Clash核心,v2rayN提供了两个专用视图

  • Clash代理视图:在使用Clash核心时显示和管理可用的代理
  • Clash连接视图:在使用Clash核心时显示活动连接及其详细信息

这些视图仅在启用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

状态栏

状态栏提供有关应用程序状态的实时信息,并允许快速访问常用操作。它显示

  1. 运行服务器信息
  2. 入站端口配置(本地和LAN)
  3. 系统代理状态和控件
  4. 路由选择
  5. 流量统计(启用时)
  6. TUN模式切换

来源: v2rayN/v2rayN/Views/MainWindow.xaml301 v2rayN/v2rayN.Desktop/Views/MainWindow.axaml125 ServiceLib/ViewModels/StatusBarViewModel.cs9-507

跨平台UI实现

v2rayN提供了两种UI实现来支持不同的平台

  1. WPF实现 (v2rayN):用于Windows,利用Windows Presentation Foundation
  2. Avalonia实现 (v2rayN.Desktop):用于跨平台支持(Windows、Linux、macOS)

两种实现都遵循相同的MVVM架构,并共享ServiceLib项目的ViewModels。

主要区别

功能WPF (Windows)Avalonia (跨平台)
框架Windows Presentation FoundationAvalonia 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

UI交互流程

v2rayN 的 UI 交互遵循清晰的模式,利用 MVVM 架构。

  1. 用户与 UI 元素(按钮点击、菜单选择等)进行交互。
  2. 交互会触发一个绑定到 ViewModel 方法的命令。
  3. ViewModel 执行相应的业务逻辑。
  4. 结果通过数据绑定或回调更新到 UI。

来源:v2rayN/v2rayN/Views/MainWindow.xaml.cs146-264 ServiceLib/ViewModels/MainWindowViewModel.cs235-336

窗口状态管理

v2rayN 为窗口状态实现了特殊处理,以支持最小化到托盘、恢复和正确的应用程序关闭。

  1. 显示/隐藏窗口:控制窗口的可见性和状态(正常、最小化、隐藏)。
  2. 快捷键支持:用于显示/隐藏窗口和更改代理设置的全局快捷键。
  3. 关机处理:在关机过程中正确清理资源。
  4. UI 存储:保存窗口大小、位置和分割器位置。

来源: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