本文整理汇总了C#中IReactiveCommand.ExecuteIfCan方法的典型用法代码示例。如果您正苦于以下问题:C# IReactiveCommand.ExecuteIfCan方法的具体用法?C# IReactiveCommand.ExecuteIfCan怎么用?C# IReactiveCommand.ExecuteIfCan使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IReactiveCommand
的用法示例。
在下文中一共展示了IReactiveCommand.ExecuteIfCan方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: IssueAssigneeViewModel
public IssueAssigneeViewModel(
Func<Task<IReadOnlyList<User>>> loadAssignees,
Func<Task<User>> loadSelectedFunc,
Func<User, Task> saveFunc)
{
var assignees = new ReactiveList<IssueAssigneeItemViewModel>();
Assignees = assignees.CreateDerivedCollection(
x => x,
filter: x => x.Name.ContainsKeyword(SearchKeyword),
signalReset: this.WhenAnyValue(x => x.SearchKeyword));
this.WhenAnyValue(x => x.Selected)
.Subscribe(x => {
foreach (var a in Assignees)
a.IsSelected = string.Equals(a.User.Login, x?.Login);
});
DismissCommand = ReactiveCommand.Create();
SaveCommand = ReactiveCommand.CreateAsyncTask(_ => {
DismissCommand.ExecuteIfCan();
return Selected != _previouslySelected ? saveFunc(_selected) : Task.FromResult(0);
});
LoadCommand = ReactiveCommand.CreateAsyncTask(async _ => {
_previouslySelected = Selected = await loadSelectedFunc();
assignees.Reset((await loadAssignees()).Select(CreateItemViewModel));
});
}
示例2: IssueMilestonesViewModel
public IssueMilestonesViewModel(
Func<Task<IReadOnlyList<Milestone>>> loadMilestones,
Func<Task<Milestone>> loadSelectedFunc,
Func<Milestone, Task> saveFunc)
{
var milestones = new ReactiveList<Milestone>();
Milestones = milestones.CreateDerivedCollection(x => CreateItemViewModel(x));
this.WhenAnyValue(x => x.Selected)
.Subscribe(x => {
foreach (var a in Milestones)
a.IsSelected = a.Number == x?.Number;
});
DismissCommand = ReactiveCommand.Create();
SaveCommand = ReactiveCommand.CreateAsyncTask(_ => {
DismissCommand.ExecuteIfCan();
return _selected != _previouslySelected ? saveFunc(_selected) : Task.FromResult(0);
});
LoadCommand = ReactiveCommand.CreateAsyncTask(async _ => {
_previouslySelected = Selected = await loadSelectedFunc();
milestones.Reset(await loadMilestones());
});
}
示例3: UserGistsViewModel
public UserGistsViewModel(IApplicationService applicationService)
{
_applicationService = applicationService;
Username = _applicationService.Account.Username;
GoToCreateGistCommand = ReactiveCommand.Create();
GoToCreateGistCommand.Subscribe(_ =>
{
var vm = CreateViewModel<GistCreateViewModel>();
ShowViewModel(vm);
});
LoadCommand = ReactiveCommand.CreateAsyncTask(t =>
GistsCollection.SimpleCollectionLoad(applicationService.Client.Users[Username].Gists.GetGists(), t as bool?));
LoadCommand.ExecuteIfCan();
}
示例4: RepositoriesTrendingViewModel
public RepositoriesTrendingViewModel(ISessionService applicationService, ITrendingRepository trendingRepository)
{
ShowRepositoryDescription = applicationService.Account.ShowRepositoryDescriptionInList;
Title = "Trending";
var defaultLanguage = LanguageRepository.DefaultLanguage;
SelectedLanguage = new LanguageItemViewModel(defaultLanguage.Name, defaultLanguage.Slug);
GoToLanguages = ReactiveCommand.Create().WithSubscription(_ =>
{
var vm = this.CreateViewModel<LanguagesViewModel>();
vm.SelectedLanguage = SelectedLanguage;
vm.WhenAnyValue(x => x.SelectedLanguage).Skip(1)
.Subscribe(x => SelectedLanguage = x);
NavigateTo(vm);
});
LoadCommand = ReactiveCommand.CreateAsyncTask(async _ => {
var requests = _times.Select(t =>
{
var language = (SelectedLanguage != null && SelectedLanguage.Slug != null) ? SelectedLanguage.Slug : null;
return new { Time = t, Query = trendingRepository.GetTrendingRepositories(t.Slug, language) };
}).ToArray();
await Task.WhenAll(requests.Select(x => x.Query));
Repositories = requests.Select(r =>
{
var transformedRepos = r.Query.Result.Select(x => new RepositoryItemViewModel(x, true, GoToRepository));
return new GroupedCollection<RepositoryItemViewModel>(r.Time.Name, new ReactiveList<RepositoryItemViewModel>(transformedRepos));
}).ToList();
});
this.WhenAnyValue(x => x.SelectedLanguage).Skip(1).Subscribe(_ =>
{
Repositories = null;
LoadCommand.ExecuteIfCan();
});
}
示例5: IssueMilestonesViewModel
public IssueMilestonesViewModel(Func<Task<IReadOnlyList<Milestone>>> loadMilestones)
{
DismissCommand = ReactiveCommand.Create();
var milestones = new ReactiveList<Milestone>();
Milestones = milestones.CreateDerivedCollection(x => {
var vm = new IssueMilestoneItemViewModel(x);
vm.IsSelected = x.Number == Selected?.Number;
vm.GoToCommand
.Select(_ => vm.IsSelected ? x : null)
.Subscribe(milestone => {
foreach (var a in Milestones.Where(y => y != vm))
a.IsSelected = false;
Selected = milestone;
DismissCommand.ExecuteIfCan();
});
return vm;
});
LoadCommand = ReactiveCommand.CreateAsyncTask(async _ => {
milestones.Reset(await loadMilestones());
});
}
示例6: AddButton
public SplitButton AddButton(string caption, string text, IReactiveCommand tapped)
{
return AddButton(caption, text, () => tapped.ExecuteIfCan());
}
示例7: StarredGistsViewModel
public StarredGistsViewModel(IApplicationService applicationService)
{
LoadCommand = ReactiveCommand.CreateAsyncTask(t =>
GistsCollection.SimpleCollectionLoad(applicationService.Client.Gists.GetStarredGists(), t as bool?));
LoadCommand.ExecuteIfCan();
}
示例8: RepositoriesTrendingViewModel
public RepositoriesTrendingViewModel(IApplicationService applicationService,
IJsonHttpClientService jsonHttpClient, INetworkActivityService networkActivityService)
{
_applicationService = applicationService;
_jsonHttpClient = jsonHttpClient;
var defaultLanguage = LanguagesViewModel.DefaultLanguage;
SelectedLanguage = new LanguageItemViewModel(defaultLanguage.Name, defaultLanguage.Slug);
GoToLanguages = ReactiveCommand.Create().WithSubscription(_ =>
{
var vm = CreateViewModel<LanguagesViewModel>();
vm.SelectedLanguage = SelectedLanguage;
vm.WhenAnyValue(x => x.SelectedLanguage).Skip(1).Subscribe(x =>
{
SelectedLanguage = x;
vm.DismissCommand.ExecuteIfCan();
});
ShowViewModel(vm);
});
var gotoRepository = new Action<RepositoryItemViewModel>(x =>
{
var vm = CreateViewModel<RepositoryViewModel>();
vm.RepositoryOwner = x.Owner;
vm.RepositoryName = x.Name;
ShowViewModel(vm);
});
LoadCommand = ReactiveCommand.CreateAsyncTask(async _ =>
{
var requests = _times.Select(t =>
{
var query = "?since=" + t.Slug;
if (SelectedLanguage != null && SelectedLanguage.Slug != null)
query += string.Format("&language={0}", SelectedLanguage.Slug);
return new { Time = t, Query = _jsonHttpClient.Get<List<TrendingRepositoryModel>>(TrendingUrl + query) };
}).ToArray();
await Task.WhenAll(requests.Select(x => x.Query));
Repositories = requests.Select(r =>
{
var transformedRepos = r.Query.Result.Select(x =>
new RepositoryItemViewModel(x.Name, x.Owner, x.AvatarUrl, x.Description, x.Stars, x.Forks, true, gotoRepository));
return new GroupedCollection<RepositoryItemViewModel>(r.Time.Name, new ReactiveList<RepositoryItemViewModel>(transformedRepos));
}).ToList();
});
LoadCommand.TriggerNetworkActivity(networkActivityService);
this.WhenAnyValue(x => x.SelectedLanguage).Subscribe(_ => LoadCommand.ExecuteIfCan());
}
示例9: WithCommand
public static UIBarButtonItem WithCommand(this UIBarButtonItem @this, IReactiveCommand command)
{
@this.Clicked += (sender, e) => command.ExecuteIfCan();
@this.EnableIfExecutable(command.CanExecuteObservable);
return @this;
}