WPF NotifyIcon 未触发 MouseEnter 事件(显示工具提示时如何更新 NotifyIcon 视图模型)
WPF NotifyIcon not firing MouseEnter event (How to update NotifyIcon viewmodel when tooltip is displayed)
我正在利用 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();
}
但是,我想在用户将鼠标悬停在托盘图标上时更新任务栏的视图模型(就在实际显示工具提示时)。如何实现? None 的 TrayIcon 事件,如 MouseEnter、TooltipDisplayed 等正在触发,因此 ViewModel 将仅在启动时读取它的值。
应该和调用 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();
}
希望对您有所帮助
我正在利用 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();
}
但是,我想在用户将鼠标悬停在托盘图标上时更新任务栏的视图模型(就在实际显示工具提示时)。如何实现? None 的 TrayIcon 事件,如 MouseEnter、TooltipDisplayed 等正在触发,因此 ViewModel 将仅在启动时读取它的值。
应该和调用 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();
}
希望对您有所帮助