gpt4 book ai didi

c# - 无法将 void 转换为 ICommand

转载 作者:行者123 更新时间:2023-11-30 21:49:09 30 4
gpt4 key购买 nike

我正在使用 WPF NotifyIcon ,实际上我正在尝试学习如何在托盘中最小化窗口后显示它。所以当用户双击图标时,窗口应该再次出现。实际上我已经创建了这段代码:

private void MetroWindow_StateChanged(object sender, EventArgs e)
{
TaskbarIcon tbi = new TaskbarIcon();
tbi.DoubleClickCommand = Recover(tbi);

switch (WindowState)
{
case WindowState.Minimized:
Visibility = Visibility.Hidden;
tbi.Visibility = Visibility.Visible;
break;
}
}

private void Recover(TaskbarIcon tbi)
{
tbi.Visibility = Visibility.Hidden;
Visibility = Visibility.Visible;
}

当我最小化窗口时,您如何看到托盘中的图标出现。这工作得很好。我已经这样声明了图标:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Test.Utils.Resources.UIDictionary"
xmlns:tb="http://www.hardcodet.net/taskbar">

<tb:TaskbarIcon x:Key="NotifyIcon"
IconSource="/Utils/Images/Test.ico"
ToolTipText="hello world" />

</ResourceDictionary>

现在的问题是在这一行:tbi.DoubleClickCommand = Recover(tbi); 我得到这个错误:

Cannot convert the type void in System.Windows.Input.ICommand

不可能以这种方式调用方法?为什么?

最佳答案

这是您需要的简单 RelayCommand 的代码

public class RelayCommand : ICommand
{
private Action<object> action;
public RelayCommand(Action<object> action)
{
this.action = action;
}
public bool CanExecute(object parameter)
{
return true;
}

public void Execute(object parameter)
{
action(parameter);
}

public event EventHandler CanExecuteChanged;
}

然后,就像其他答案一样

tbi.DoubleClickCommand =new RelayCommand(_ => Recover(tbi));

关于c# - 无法将 void 转换为 ICommand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37166608/

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