菜单

主窗口

相关源文件

本页介绍了v2rayN的主窗口,它是用于管理代理连接、查看应用程序消息和配置系统的中央界面。主窗口使用ReactiveUI实现了MVVM模式,并具有灵活的布局系统,支持多种方向选项。

有关服务器管理的具体信息,请参阅服务器管理

概述

主窗口是v2rayN的主要用户界面组件。它提供了对所有主要功能,包括:

  • 服务器配置文件管理
  • 消息查看
  • Clash代理和连接监控
  • 配置设置
  • 更新检查
  • 系统托盘集成

来源: v2rayN/v2rayN/Views/MainWindow.xaml30-298 v2rayN/v2rayN/Views/MainWindow.xaml.cs16-28

布局模式

主窗口支持三种不同的布局方向,可通过应用程序设置进行选择。

  1. 水平布局 (EGirdOrientation.Horizontal) - 窗口水平分割,服务器配置文件在左侧,选项卡式视图在右侧。
  2. 垂直布局 (EGirdOrientation.Vertical) - 窗口垂直分割,服务器配置文件在顶部,选项卡式视图在底部。
  3. 选项卡布局 (EGirdOrientation.Tab) - 所有组件都放置在窗口左侧的选项卡中。

来源: v2rayN/v2rayN/Views/MainWindow.xaml.cs42-68 v2rayN/v2rayN/Views/MainWindow.xaml304-421

关键组件

菜单栏通过一系列下拉菜单和按钮,提供了对应用程序所有主要功能的访问。

菜单目的
服务器添加不同类型的服务器(VMess、VLESS、Shadowsocks等)
订阅管理订阅URL并更新服务器列表
设置配置应用程序选项、路由规则、DNS设置等。
重新加载重新加载配置和服务器
检查更新检查应用程序更新
帮助访问文档和资源
推广查看推广信息
关闭最小化到系统托盘

来源: v2rayN/v2rayN/Views/MainWindow.xaml39-289

内容区域

内容区域包含多个提供不同功能的视图。

  1. 配置文件视图:列出所有已配置的服务器配置文件并允许进行管理。
  2. 消息视图:显示应用程序日志和状态消息。
  3. Clash代理视图:显示和管理Clash代理配置。
  4. Clash连接视图:使用Clash时显示活动的网络连接。

根据所选的布局模式,这些视图在窗口内的排列方式会有所不同。

来源: v2rayN/v2rayN/Views/MainWindow.xaml304-421 v2rayN/v2rayN/Views/MainWindow.xaml.cs42-68

消息视图

消息视图显示日志消息和状态信息。它提供筛选功能,帮助用户专注于特定类型的消息,并提供复制或清除显示文本的选项。

特性

  • 消息筛选
  • 自动刷新开关
  • 自动滚动到底部开关
  • 复制消息功能
  • 清除消息功能

来源: v2rayN/v2rayN/Views/MsgView.xaml16-109 v2rayN/v2rayN/Views/MsgView.xaml.cs10-89

Clash视图

使用Clash模式时,将提供两个专用视图。

  1. Clash代理视图:允许选择代理和代理组,并提供以下选项:

    • 在规则、全局和直接模式之间切换
    • 按延迟或名称对代理进行排序
    • 运行延迟测试
  2. Clash连接视图:显示具有详细信息的活动连接。

    • 主机筛选
    • 连接管理(关闭所有)
    • 自动刷新功能

来源: v2rayN/v2rayN/Views/ClashProxiesView.xaml16-190 v2rayN/v2rayN/Views/ClashConnectionsView.xaml16-104

架构集成

主窗口通过ViewModel和ReactiveUI框架与v2rayN的其他部分集成。

来源: v2rayN/v2rayN/Views/MainWindow.xaml.cs38-40 v2rayN/v2rayN/Views/MainWindow.xaml.cs71-132

初始化和加载

主窗口初始化时,会执行几个关键步骤:

  1. AppHandler.Instance.Config加载配置。
  2. 注册应用程序启动通知。
  3. 设置会话结束、窗口关闭等事件的事件处理程序。
  4. 订阅消息总线通知。
  5. 创建MainWindowViewModel。
  6. 根据配置初始化适当的网格布局。
  7. 将命令和属性绑定到ViewModel。
  8. 恢复窗口位置和尺寸。
  9. 注册全局热键。

来源: v2rayN/v2rayN/Views/MainWindow.xaml.cs22-145

窗口管理

窗口状态

可以使用ShowHideWindow方法来显示或隐藏主窗口(最小化到系统托盘)。这可以通过以下方式触发:

  • “关闭”菜单项
  • 全局热键(如果已配置)
  • 程序调用

来源: v2rayN/v2rayN/Views/MainWindow.xaml.cs378-396

UI恢复和存储

主窗口使用以下方法保存和恢复其大小、位置和布局:

  • RestoreUI() - 在初始化期间调用以恢复已保存的尺寸。
  • StorageUI() - 在窗口关闭前调用以保存当前尺寸。

这些方法管理:

  • 窗口宽度和高度
  • 网格分隔线位置
  • 布局模式设置

来源: v2rayN/v2rayN/Views/MainWindow.xaml.cs398-442

事件处理

键盘快捷键

主窗口通过MainWindow_PreviewKeyDown方法处理键盘快捷键。

  • Ctrl+V:通过剪贴板添加服务器(除非焦点在TextBox中)。
  • Ctrl+S:截屏进行二维码扫描。
  • F5:重新加载配置。

来源: v2rayN/v2rayN/Views/MainWindow.xaml.cs282-318

全局热键

应用程序支持全局热键,即使应用程序未处于焦点状态也能正常工作。这些热键由OnHotkeyHandler方法处理,包括:

  • 显示/隐藏主窗口
  • 更改系统代理设置

来源: v2rayN/v2rayN/Views/MainWindow.xaml.cs252-267 v2rayN/v2rayN/Views/MainWindow.xaml.cs144

特殊功能

二维码扫描

主窗口提供两种通过二维码添加服务器的方法:

  1. 屏幕截图扫描(ScanScreenTaskAsync
  2. 图像文件扫描(ScanImageTaskAsync

来源: v2rayN/v2rayN/Views/MainWindow.xaml.cs336-360

对话框托管

该窗口使用MaterialDesign的DialogHost来显示模态对话框。

  • 检查更新对话框
  • 备份和还原对话框

来源: v2rayN/v2rayN/Views/MainWindow.xaml.cs362-372 v2rayN/v2rayN/Views/MainWindow.xaml31-35

查看更新和沟通

主窗口通过 UpdateViewHandler 方法使用命令模式来处理各种操作

  • 打开配置窗口
  • 显示/隐藏主窗口
  • 更新统计信息
  • 重新加载数据
  • 应用程序关闭
  • 二维码扫描
  • 通过剪贴板添加服务器

这集中了 UI 更新的处理,并确保它们在 UI 线程上发生。

来源: v2rayN/v2rayN/Views/MainWindow.xaml.cs166-250

主题支持

主窗口支持通过以下方式进行主题定制

  • Material Design 主题集成
  • 在 App.xaml 中定义的自定义样式
  • 通过工具栏中的弹出按钮访问的主题设置

来源: v2rayN/v2rayN/Views/MainWindow.xaml291-297 v2rayN/v2rayN/App.xaml9-231