WPF NotifyIcon не запускает событие MouseEnter (Как обновить модель представления NotifyIcon при отображении всплывающей подсказки)
Я использую библиотеку WPF NotifyIcon для отображения иконки в трее и всплывающей подсказки, когда пользователь наводит курсор мыши на иконку в трее. Я определил свою подсказку как UserControl:
<tb:TaskbarIcon x:Class="MyAwesomeApp.TrayIconUserControl">
<tb:TaskbarIcon.TrayToolTip>
<Grid>
<TextBlock Text="{Binding TextFromViewModel}" />
</Grid>
</tb:TaskbarIcon.TrayToolTip>
</tb:TaskbarIcon>
И я создаю это в основной ViewModel:
private TaskbarIcon TrayIcon;
public void CreateTrayIcon()
{
TrayIcon = new TrayIconUserControl();
}
Тем не менее, я хочу обновить view-модель таксбара, когда пользователь наведет курсор на иконку в трее (только когда на самом деле отображается подсказка). Как этого добиться? Ни одно из событий TrayIcon, как MouseEnter, TooltipDisplayed и т. Д., Не запускается, поэтому ViewModel будет считывать его значения только при запуске.
1 ответ
Решение
Должно быть так же просто, как вызов PreviewTrayToolTipOpen
событие, либо в вашем XAML:
<tb:TaskbarIcon x:Class="MyAwesomeApp.TrayIconUserControl"
PreviewTrayToolTipOpen="PreviewTrayToolTipOpen">
<tb:TaskbarIcon.TrayToolTip>
<Grid>
<TextBlock Text="{Binding TextFromViewModel}" />
</Grid>
</tb:TaskbarIcon.TrayToolTip>
</tb:TaskbarIcon>
Или в вашем коде позади:
TrayIcon = new TrayIconUserControl();
TrayIcon.PreviewTrayToolTipOpen += PreviewTrayToolTipOpen;
И два метода имеют одинаковую сигнатуру обработчика:
private void PreviewTrayToolTipOpen(object sender, RoutedEventArgs routedEventArgs)
{
throw new NotImplementedException();
}
Надеюсь это поможет