using System.Collections.ObjectModel; using System.Windows.Input; namespace SHH.CameraDashboard { public class VideoWallViewModel : ViewModelBase { // 视频列表 public ObservableCollection VideoTiles { get; } = new ObservableCollection(); // 控制 UniformGrid 的列数 (决定是 2x2 还是 3x3) private int _columns = 2; public int Columns { get => _columns; set => SetProperty(ref _columns, value); } // 切换布局命令 public ICommand SetLayoutCommand { get; } public VideoWallViewModel() { SetLayoutCommand = new RelayCommand(ExecuteSetLayout); // 3. 初始化格子 (不再需要传入 IP/Port 去主动连接了) // 我们用 CameraId 或 Name 来作为匹配标识 InitVideoTiles(); } private void InitVideoTiles() { // 假设我们预设 4 个格子,分别对应不同的摄像头 ID // 这里 ID 必须和采集端发送的 VideoPayload.CameraId 一致 //VideoTiles.Add(new VideoTileViewModel("1004", "仓库通道")); } private void ExecuteSetLayout(string layoutType) { switch (layoutType) { case "1x1": Columns = 1; break; case "2x2": Columns = 2; break; case "3x3": Columns = 3; break; case "4x4": Columns = 4; break; default: Columns = 2; break; } } } }