public ProductItemsViewModel( IProductsProvider productsProvider, IProductsSearcher productsSearcher, IOrderBuilder orderBuilder, IPageNavigator pageNavigator) { Contract.Assert(productsProvider != null); Contract.Assert(orderBuilder != null); Contract.Assert(pageNavigator != null); _productsProvider = productsProvider; _productsSearcher = productsSearcher; _orderBuilder = orderBuilder; _pageNavigator = pageNavigator; SearchCommand = new LambdaCommand( parameter => { var searchResult = _productsSearcher.Search(SearchQuery); Products = searchResult.Select(CreateProductViewModel); }); GotoOrderCommand = new LambdaCommand( _ => { _pageNavigator.NavigateToOrderPage(new OrderViewModel(_orderBuilder.GetOrder(), _pageNavigator)); }); InitializeProducts(); }