public MainScreen(
     Main.AddressBookViewModel addressBook,
     Func<Detail.PersonViewModel> makePersonDetail)
 {
     _addressBook = addressBook;
     _makePersonDetail = makePersonDetail;
 }
        public Container()
        {
            var addressBook = new AddressBook();
            var personSelection = new Main.PersonSelection();

            Func<Person, Main.PersonViewModel> makePersonViewModel = person => new Main.PersonViewModel(person);

            var addressBookViewModel = new Main.AddressBookViewModel(addressBook, personSelection, makePersonViewModel);

            Func<Detail.PersonViewModel> makePersonDetail = delegate
            {
                if (personSelection.SelectedPerson == null)
                    return null;
                return new Detail.PersonViewModel(personSelection.SelectedPerson);
            };

            _mainScreen = new MainScreen(addressBookViewModel, makePersonDetail);
        }