[英]Cannot convert void to ICommand
我正在使用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);
我收到此錯誤:
無法在System.Windows.Input.ICommand中將類型轉換為void
不可能以這種方式調用方法嗎? 為什么?
這是您需要的簡單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));
實際上, DoubleClickCommand
的類型為ICommand
。
您需要將其設置為ICommand
子類型RelayCommand
,以便像這樣進行編譯:
tbi.DoubleClickCommand =new RelayCommand(param => Recover(tbi));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.