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();
    }

Надеюсь это поможет

Другие вопросы по тегам