我是 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/