It allows you to control 2 different ViewModels: a design time view model, and a run time ViewModel. Because one of the author's goals of MVVM - Light is to make your XAML - ViewModel connection visibile in blend (or 'blendable') , the ViewModelLocator comes in handy for this purpose. Especially for the phone. The ExampleIn our example we will create a simple task list. We'll begin by creating a parent ViewModel that holds all the tasks and a child ViewModel to describe each task. Listing 1 shows the code for the MainViewModel. It contains an observable collection of task items for our to do list. Notice the IsInDesignMode flag; this flag checks to see if we are in design mode (i.e. in blend or the visual studio designer). If we are in design mode, then we can populate are design view with dummy data so we can see exactly how the design will show up on the phone with data inside of it! The dummy task data also consists of ListItemViewModels for the individual tasks. The LisItemViewModel in our example contains two properties: a property to indicate if we finished the task, and a description of the task itself. Listing 1 - The parent View Model for the main pageusing System;
using System.Collections.ObjectModel;
using GalaSoft.MvvmLight;
namespace ItemList.ViewModels
{
public class MainPageViewModel : ViewModelBase
{
// List of Tasks for the day
private ObservableCollection<ListItemViewModel> _listItems;
public ObservableCollection<ListItemViewModel> ListItems
{
get { return _listItems; }
set { _listItems = value; RaisePropertyChanged("ListItems"); }
}
public MainPageViewModel()
{
ListItems = new ObservableCollection<ListItemViewModel>();
// if in design view, show two dummy tasks
if (IsInDesignMode)
{
ListItems.Add(new ListItemViewModel {IsFinished = true, Text = "Take Out Garbage"});
ListItems.Add(new ListItemViewModel { IsFinished = false, Text = "Bring in Newspaper" });
}
else
{
// read in real tasks from a db here
}
}
}
}The ViewModel LocatorThe ViewModelLocator controls the instantiation of our ViewModel. You can write the ViewModelLocator however you wish, but in the case of our ViewModelLocator, we want it to instatiate only one ViewModel for the MainView. In other words, if the viewmodel has already been created for the view, we don't regenerate the ViewModel, we just use the existing one. Also we want our ViewModelLocator to choose a ViewModel based on whether the program using the locator is a design tool or the phone application itself.
Read more: Windows Phone Geek
QR:
2 comments:
[url=http://englandpharmacy.co.uk/products/adalat.htm][img]http://onlinemedistore.com/7.jpg[/img][/url]
belmont pharmacy http://englandpharmacy.co.uk/products/zetia.htm diploma in pharmacy [url=http://englandpharmacy.co.uk/products/lysexl.htm]board of pharmacy florida[/url]
generic zantac viagra online pharmacy cheap onlin http://englandpharmacy.co.uk/products/fml-forte.htm toyota pharmacy princeton indiana [url=http://englandpharmacy.co.uk/products/kamasutra-dotted-condoms.htm]kamasutra dotted condoms[/url]
why is team working important in pharmacy http://englandpharmacy.co.uk/categories/skin-care.htm computers in the pharmacy field [url=http://englandpharmacy.co.uk/products/hytrin.htm]increase website traffic canadian internet pharmacy[/url]
cvs pharmacy locations http://englandpharmacy.co.uk/products/proscar.htm walmart pharmacy generic [url=http://englandpharmacy.co.uk/products/clozaril.htm]clozaril[/url]
dating ukraine http://loveepicentre.com/ wife is dating another woman
online dating scams targeting women [url=http://loveepicentre.com/advice/]is gabriel bryne dating anyone[/url] erin holbrook dating
dating khon kaen [url=http://loveepicentre.com/map/]who is david spade dating[/url] dating perth adults casual [url=http://loveepicentre.com/user/stantrener/]stantrener[/url] mexican blanket dating
Post a Comment