public MainWindowViewModel(DataRepository repo) { this.repo = repo.ThrowIfNull(); feeds = new ObservableCollection<FeedViewModel>( repo.AllFeeds().Select(feed => new FeedViewModel(repo, feed))); feedItems = new ObservableCollection<FeedItemViewModel>( repo.AllFeedItems().Select(feedItem => new FeedItemViewModel(feedItem))); FeedsView = CollectionViewSource.GetDefaultView(feeds); FeedsView.CurrentChanged += HandleFeedsViewCurrentChanged; FeedItemsView = CollectionViewSource.GetDefaultView(feedItems); FeedItemsView.Filter = FeedItemsViewFilter; FeedItemsView.SortDescriptions.Add(new SortDescription("PublishDate", ListSortDirection.Descending)); NewFeedCommand = new RelayCommand(param => NewFeed()); ModifyFeedCommand = new RelayCommand(param => ModifyFeed()); ClearFeedItemsFilterCommand = new RelayCommand(param => ClearFeedItemsFilter()); repo.FeedAdded += HandleFeedAdded; repo.FeedModified += HandleFeedModified; repo.FeedDeleted += HandleFeedDeleted; repo.FeedItemsAdded += HandleFeedItemsAdded; FeedsView.MoveCurrentTo(null); }
public FeedViewModel(DataRepository repo, Feed feed) : base(feed) { this.repo = repo.ThrowIfNull(); ProcessFeedCommand = new RelayCommand(param => ProcessFeed(), param => true); SaveFeedCommand = new RelayCommand(param => SaveFeed(), param => true); DeleteFeedCommand = new RelayCommand(param => DeleteFeed()); }