public MenuViewModel( Func <Type, string, object, MenuItemViewModel> factory, INavigationService navigationService, IPlatformService platformService, ISettingManager settingManager) { _navigationService = navigationService; _platformService = platformService; _settingManager = settingManager; _factory = factory; Items = new ReactiveList <MenuItemViewModel>(); Navigate = ReactiveCommand.Create(DoNavigate); Load = ReactiveCommand.CreateFromTask(DoLoad); _navigationService.Navigated .Where(x => x != Selection?.Type) .Select(x => Items.FirstOrDefault(i => i.Type == x)) .Subscribe(x => Selection = x); }
private async Task DoLoad() { await _navigationService.Navigate <FeedViewModel>(); var settings = await _settingManager.Read(); settings.Fetched = DateTime.Now; await _platformService.RegisterBackgroundTask(settings.Period); await _platformService.RegisterTheme(settings.Theme); await _settingManager.Write(settings); _navigationService.Icons.ToList().ForEach(item => Items.Add(_factory(item.Key, item.Value.Item1, item.Value.Item2) )); Selection = Items.FirstOrDefault(); }
public MenuViewModel( Func <Type, string, object, MenuItemViewModel> factory, INavigationService navigationService, IPlatformService platformService, ISettingManager settingManager) { Items = new ReactiveList <MenuItemViewModel>(); Navigate = ReactiveCommand.Create(() => { if (Selection == null) { return; } typeof(INavigationService) .GetMethod("Navigate", new Type[] {}) .MakeGenericMethod(Selection.Type) .Invoke(navigationService, null); }); Load = ReactiveCommand.CreateFromTask(async() => { await navigationService.Navigate <FeedViewModel>(); var settings = await settingManager.Read(); settings.Fetched = DateTime.Now; await platformService.RegisterBackgroundTask(settings.Period); await platformService.RegisterTheme(settings.Theme); await settingManager.Write(settings); navigationService.Icons.ToList().ForEach(item => Items.Add( factory(item.Key, item.Value.Item1, item.Value.Item2))); Selection = Items.FirstOrDefault(); navigationService.Navigated .Where(x => x != Selection?.Type) .Select(x => Items.FirstOrDefault(i => i.Type == x)) .Subscribe(x => Selection = x); }); }