Суть проблемы (в чём баг)
При клике правой кнопкой мыши (ПКМ) на карточке плейлиста в медиатеке открывается контекстное меню. Однако, как только курсор мыши уходит с карточки на элементы меню, карточка визуально гаснет (ее рамка снова становится серой). Теряется визуальный контекст: пользователь не видит четкой связи между меню и объектом, для которого оно было вызвано. Карточка должна сохранять обводку своего активного состояния (AccentBrush) всё время, пока открыто меню.
Как воспроизвести (Steps to Reproduce)
- Открыть вкладку "Библиотека".
- Кликнуть ПКМ по любой карточке плейлиста (появится контекстное меню).
- Навести курсор мыши на элементы открывшегося меню.
- Наблюдать, как карточка плейлиста теряет рамку активного наведения и визуально сливается со спокойным состоянием сетки.
Возможное техническое решение (теория и архитектура)
- В файле стилей
AppComponents.axaml добавить поддержку класса .menu-open для карточки плейлиста, который принудительно задает BorderBrush в цвет AccentBrush:
<Style Selector="Border.playlist-card-inner.menu-open">
<Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}" />
</Style>
- В разметке
LibraryView.axaml привязать события открытия и закрытия контекстного меню к методам в code-behind.
- В code-behind
LibraryView.axaml.cs при срабатывании событий динамически добавлять и удалять класс menu-open у PlacementTarget (контрола Border, на котором было вызвано меню). Это полностью исключает утечки памяти и не перегружает VM-слой логикой отображения.
Окружение (Environment)
- Версия LMP: 256-dev+
- Версия ОС: Windows 10 / 11
Суть проблемы (в чём баг)
При клике правой кнопкой мыши (ПКМ) на карточке плейлиста в медиатеке открывается контекстное меню. Однако, как только курсор мыши уходит с карточки на элементы меню, карточка визуально гаснет (ее рамка снова становится серой). Теряется визуальный контекст: пользователь не видит четкой связи между меню и объектом, для которого оно было вызвано. Карточка должна сохранять обводку своего активного состояния (
AccentBrush) всё время, пока открыто меню.Как воспроизвести (Steps to Reproduce)
Возможное техническое решение (теория и архитектура)
AppComponents.axamlдобавить поддержку класса.menu-openдля карточки плейлиста, который принудительно задаетBorderBrushв цветAccentBrush:LibraryView.axamlпривязать события открытия и закрытия контекстного меню к методам в code-behind.LibraryView.axaml.csпри срабатывании событий динамически добавлять и удалять классmenu-openуPlacementTarget(контролаBorder, на котором было вызвано меню). Это полностью исключает утечки памяти и не перегружает VM-слой логикой отображения.Окружение (Environment)