WPF NotifyIcon 引用 TaskbarIcon(无窗口)

标签 wpf notifyicon

我是 WPF NotifyIcon 的新手,我正在尝试使用 Windowless 示例,它使用 ResourceDictionary 而不是窗口,并且 TaskbarIcon.DataContext 设置为我的 ViewModel。我可以调用示例命令(ShowWindowCommand 等),它运行良好。

但是,在我的 ViewModel 中,我不知道如何引用 TaskbarIcon。我想显示一个标准的气球,类似于 NotifyIcon.ShowBallonTip(title, text, BalloonIcon.Error)。我已尝试为 tb:TaskbarIcon 指定一个 x:Name,但我的 ViewModel 仍然看不到它。

如何从我的 ViewModel 引用 TaskbarIcon?谢谢!

 <tb:TaskbarIcon x:Key="NotifyIcon"
                IconSource="/Red.ico"
                ToolTipText="Double-click for window, right-click for menu"
                DoubleClickCommand="{Binding ShowWindowCommand}"
                ContextMenu="{StaticResource SysTrayMenu}">

    <tb:TaskbarIcon.DataContext>
        <local:NotifyIconViewModel />
    </tb:TaskbarIcon.DataContext>
</tb:TaskbarIcon>

最佳答案

在 MVVM 中,您无法直接在 VM 中操作控件。 VM 必须对 View 一无所知。而不是它,您必须在 VM 中定义属性 Icon(我看到它是 NotifyIconViewModel),然后在 View (TaskbarIcon) 中您需要将它绑定(bind)到 IconSource。

虚拟机:

public Icon { get { new System.Drawing.Icon(@"..\Properties\Icons\YourIcon.ico"); }};

查看

<tb:TaskbarIcon DataContext="YourViewModel"
                IconSource="{Binding Path=Icon}"
                ToolTipText="Double-click for window, right-click for menu"
                DoubleClickCommand="{Binding ShowWindowCommand}"
                ContextMenu="{StaticResource SysTrayMenu}"/>

关于WPF NotifyIcon 引用 TaskbarIcon(无窗口),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48888529/

相关文章:

c# - 如何将数据传递到 XAML 中的 IValueConverter?

c# - WPF - 当网格开始切割元素时使元素消失

c# - 停止自动隐藏托盘通知图标

c# - 在 Windows 10 中单击一次 NotifyIcon 不显示

c# - 从 ResourceStream 获取图标

c# - 如何使Visual Studio将更新后的图标用于NotifyIcon?

c# - 双向绑定(bind) View 的 DependencyProperty 到 View 模型的属性?

wpf - 将可调整大小的 Expander 从右向左展开

wpf - 如何将文本框数据绑定(bind)到 CodeBehind 中的属性