【发布时间】:2014-10-08 17:52:01
【问题描述】:
假设我有以下命令
public class SignOutCommand : CommandBase, ISignOutCommand
{
private readonly UserModel _userModel;
private readonly IUserService _userService;
public SignOutCommand(IUserService userService)
{
_userService = userService;
_userModel = App.CurrentUser;
}
public bool CanExecute(object parameter)
{
var vm = parameter as EditProfileViewModel;
return vm != null;
}
public Task<bool> CanExecuteAsync(object parameter)
{
return Task.Run(() => CanExecute(parameter);
}
public void Execute(object parameter)
{
var vm = (EditProfileViewModel)parameter;
var signOutSucceeded = SignOutUser();
if (signOutSucceeded)
{
vm.AfterSuccessfulSignOut();
}
}
public Task ExecuteAsync(object parameter)
{
return Task.Run(() => Execute(parameter);
}
private bool SignOutUser()
{
// populate this so that we get the attached collections.
var user = _userService.GetByEmailAddress(_userModel.Email);
_userService.RevokeLoggedInUser(user);
return true;
}
}
我的 XAML 有一个按钮
<Button Text="Sign out"
Command="{Binding SignOutCommand}"
CommandParameter="{Binding}" />
执行ExecuteAsync 而不是Execute 需要什么?对不起,如果这很简单,我对 XAML 很陌生。
另外,我实际上是在 Xamarin.Forms XAML 中执行此操作,不确定它是否在这里有所作为。
【问题讨论】:
-
你有没有像他在这里一样尝试过? stackoverflow.com/questions/12858501/…
-
你试过这种方式吗? wintellect.com/blogs/jlikness/…
标签: c# xaml asynchronous command