private void InitializeCommands() { PauseCommand = new RelayCommand <IDownloadingFile>( item => OperateTaskToken(item, token => token.Suspend(), "Pause task failed."), // TODO: [I18N] item => item.DownloadInfo.Status == TransferStatus.Transferring || item.DownloadInfo.Status == TransferStatus.Ready); StartCommand = new RelayCommand <IDownloadingFile>( item => OperateTaskToken(item, token => token.Ready(), "Restart task failed."), item => item.DownloadInfo.Status == TransferStatus.Suspended); StartForceCommand = new RelayCommand <IDownloadingFile>( item => OperateTaskToken(item, token => token.AsNext(), "Jump queue failed."), item => item.DownloadInfo.Status != TransferStatus.Transferring); CancelCommand = new RelayCommand <IDownloadingFile>( item => OperateTaskToken(item, token => token.Dispose(), "Cancel task failed.")); PauseAllCommand = new RelayCommand( () => TransferTasks.ForEach(item => PauseCommand.Invoke(item)), () => TransferTasks?.Any() ?? false); CancelAllCommand = new RelayCommand( () => TransferTasks.ForEach(item => CancelCommand.Invoke(item)), () => TransferTasks?.Any() ?? false); }