/
githubmirror
/
PowerToys
Обзор
Документация
Войти
/
githubmirror
/
PowerToys
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/modules/cmdpal/Microsoft.CmdPal.UI.ViewModels/IconInfoViewModel.cs
57 строк
2 KB
Jiří Polášek
CmdPal: Handle an empty icon in dock items (#45968)
09 мар 2026, 14:17
Не верифицирован
09 мар 2026, 14:17
c6f1a09
Код
Авторство
О чём код?
// 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 CommunityToolkit.Mvvm.ComponentModel; using Microsoft.CmdPal.UI.ViewModels.Models; using Microsoft.CommandPalette.Extensions; namespace Microsoft.CmdPal.UI.ViewModels; public partial class IconInfoViewModel : ObservableObject, IIconInfo { private readonly ExtensionObject<IIconInfo> _model = new(null); // These are properties that are "observable" from the extension object // itself, in the sense that they get raised by PropChanged events from the // extension. However, we don't want to actually make them // [ObservableProperty]s, because PropChanged comes in off the UI thread, // and ObservableProperty is not smart enough to raise the PropertyChanged // on the UI thread. public IconDataViewModel Light { get; private set; } public IconDataViewModel Dark { get; private set; } public IconDataViewModel IconForTheme(bool light) => light ? Light : Dark; public bool HasIcon(bool light) => IconForTheme(light).HasIcon; public bool IsSet => _model.Unsafe is not null; IIconData? IIconInfo.Dark => Dark; IIconData? IIconInfo.Light => Light; public IconInfoViewModel(IIconInfo? icon) { _model = new(icon); Light = new(null); Dark = new(null); } // Unsafe, needs to be called on BG thread public void InitializeProperties() { var model = _model.Unsafe; if (model is null) { return; } Light = new(model.Light); Light.InitializeProperties(); Dark = new(model.Dark); Dark.InitializeProperties(); } }