gpt4 book ai didi

WPF NotifyIcon 引用 TaskbarIcon(无窗口)

转载 作者:行者123 更新时间:2023-12-05 07:37:00 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com