Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public abstract class NavigationItem<T> : NavigationItem
- {
- public NavigationItem(NavigationData data)
- : base(data)
- {
- Items = new ObservableCollection<T>();
- }
- public ObservableCollection<T> Items { get; private set; }
- protected abstract Task<IEnumerable<T>> GetItems(CancellationToken token);
- protected override async Task DoLoad(CancellationToken token)
- {
- var items = await GetItems(token);
- token.ThrowIfCancellationRequested();
- if (items != null)
- {
- await Task.Run(() =>
- {
- DispatcherLocator.Dispatcher.Invoke(() =>
- {
- foreach (var item in items)
- {
- Items.Add(item);
- if (token.IsCancellationRequested)
- break;
- }
- });
- });
- }
- }
- protected override async Task DoUnload()
- {
- await Task.Run(() => DispatcherLocator.Dispatcher.Invoke(() => Items.Clear()));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement