/
githubmirror
/
PowerToys
Обзор
Документация
Войти
/
githubmirror
/
PowerToys
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/CommandSettingsViewModel.cs
61 строка
2 KB
Michael Jolley
CmdPal: Removing Core projects (#45693)
23 фев 2026, 15:05
Не верифицирован
23 фев 2026, 15:05
138c66c
Код
Авторство
О чём код?
// Copyright (c) Microsoft Corporation // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using Microsoft.CmdPal.Common; using Microsoft.CmdPal.UI.ViewModels; using Microsoft.CmdPal.UI.ViewModels.Models; using Microsoft.CommandPalette.Extensions; namespace Microsoft.CmdPal.UI.ViewModels; public partial class CommandSettingsViewModel(ICommandSettings? _unsafeSettings, CommandProviderWrapper provider, TaskScheduler mainThread) { private readonly ExtensionObject<ICommandSettings> _model = new(_unsafeSettings); public ContentPageViewModel? SettingsPage { get; private set; } public bool Initialized { get; private set; } public bool HasSettings => _model.Unsafe is not null && // We have a settings model AND (!Initialized || SettingsPage is not null); // we weren't initialized, OR we were, and we do have a settings page private void UnsafeInitializeProperties() { var model = _model.Unsafe; if (model is null) { return; } if (model.SettingsPage is not null) { SettingsPage = new CommandPaletteContentPageViewModel(model.SettingsPage, mainThread, provider.ExtensionHost, provider.GetProviderContext()); SettingsPage.InitializeProperties(); } } public void SafeInitializeProperties() { try { UnsafeInitializeProperties(); } catch (Exception ex) { CoreLogger.LogError($"Failed to load settings page", ex: ex); } Initialized = true; } public void DoOnUiThread(Action action) { Task.Factory.StartNew( action, CancellationToken.None, TaskCreationOptions.None, mainThread); } }