public MainWindow() { WallpaperManager.InitUIDispatcher(Dispatcher); InitializeComponent(); //用node+electron+http api渲染,待c#有更好的库时,再考虑c#渲染 RenderFactory.Renders.Add(typeof(ElectronWebRender), ElectronWebRender.StaticSupportTypes); monitors.ItemsSource = monitorsVM = Screen.AllScreens.Select(m => new Monitor() { DeviceName = m.DeviceName, Checked = true }).ToList(); var audioOption = Screen.AllScreens.Select(m => new DescriptorInfo() { Text = m.DeviceName, DefaultValue = Screen.AllScreens.ToList().IndexOf(m) }).ToList(); audioOption.Insert(0, new DescriptorInfo() { Text = "禁用", DefaultValue = -1 }); var screenSetting = Screen.AllScreens.Select(m => new ScreenOption() { ScreenIndex = (uint)Screen.AllScreens.ToList().IndexOf(m), WhenAppMaximized = ActionWhenMaximized.Pause, }).ToList(); var screenSettingOptions = new List <DescriptorInfo>() { new DescriptorInfo() { Text = "播放", DefaultValue = ActionWhenMaximized.Play }, new DescriptorInfo() { Text = "暂停", DefaultValue = ActionWhenMaximized.Pause }, new DescriptorInfo() { Text = "停止", DefaultValue = ActionWhenMaximized.Stop }, }; var descInfo = new DescriptorInfoDict() { { nameof(LiveWallpaperOptions), new DescriptorInfo() { Text = "壁纸设置", PropertyDescriptors = new DescriptorInfoDict() { { nameof(LiveWallpaperOptions.AudioScreenIndex), new DescriptorInfo() { Text = "音源", Type = PropertyType.Combobox, Options = new ObservableCollection <DescriptorInfo>(audioOption), DefaultValue = -1, } }, { nameof(LiveWallpaperOptions.AutoRestartWhenExplorerCrash), new DescriptorInfo() { Text = "崩溃后自动恢复", DefaultValue = true, } }, { nameof(LiveWallpaperOptions.AppMaximizedEffectAllScreen), new DescriptorInfo() { Text = "全屏检测影响所有屏幕", DefaultValue = true, } }, { nameof(LiveWallpaperOptions.ScreenOptions), new DescriptorInfo() { Text = "显示器设置", Type = PropertyType.List, CanAddItem = false, CanRemoveItem = false, DefaultValue = screenSetting, PropertyDescriptors = new DescriptorInfoDict() { { nameof(ScreenOption.ScreenIndex), new DescriptorInfo() { Text = "屏幕", Type = PropertyType.Label } }, { nameof(ScreenOption.WhenAppMaximized), new DescriptorInfo() { Text = "桌面被挡住时", Options = new ObservableCollection <DescriptorInfo>(screenSettingOptions) } } } } }, } } } }; var setting = new LiveWallpaperOptions() { ScreenOptions = screenSetting }; var vm = ConfigerService.GetVM(setting, descInfo); configer.DataContext = vm; }