Применение шаблона проектирования mvvm при разработке...
TRANSCRIPT
![Page 1: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/1.jpg)
Braintreehttp://www.nrumyantsev.com/
![Page 2: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/2.jpg)
2
![Page 3: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/3.jpg)
3
![Page 4: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/4.jpg)
4
![Page 5: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/5.jpg)
5
Model View
Controller
![Page 6: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/6.jpg)
6
Model View
Presentation Model
(ViewModel)
DataBinding
![Page 7: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/7.jpg)
7
![Page 8: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/8.jpg)
8
![Page 9: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/9.jpg)
9
<DataTemplate x:Key="MapTemplate"><my:Pushpin Location="{Binding Location}" />
</DataTemplate>
...
<my:Map Name="map1"Height="494"HorizontalAlignment="Left"Margin="20,6,0,0"VerticalAlignment="Top"Width="444"Center="{Binding MapCenter, Mode=TwoWay}"ZoomLevel="{Binding MapZoomLevel, Mode=TwoWay}"><my:MapItemsControl x:Name="ListOfItems"
ItemTemplate="{StaticResource MapTemplate}"ItemsSource="{Binding LocationDataCollection}">
</my:MapItemsControl></my:Map>
![Page 10: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/10.jpg)
10
<StackPanel Orientation="Horizontal" Height="22"><Label Width="50"> Options: </Label><Button x:Name="Search" Width="100"
Command="{Binding SearchCommand}" >Search</Button></StackPanel>
![Page 11: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/11.jpg)
11
public class SearchCommand : ICommand{
private ViewModel viewModel;
public SearchCommand(ViewModel viewModelInstance){
viewModel = viewModelInstance;}
#region ICommand Memberspublic bool CanExecute(object parameter){
return true;}
public event EventHandler CanExecuteChanged{
add { CommandManager.RequerySuggested += value; }remove { CommandManager.RequerySuggested -= value; }
}
public void Execute(object parameter){
viewModel.Search();}#endregion
}
![Page 13: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/13.jpg)
13
IUnityContainer Container = new UnityContainer();
if (ViewModelBase.IsInDesignModeStatic){
Container.RegisterType<IDataService,Design.DesignDataService>();}else{
Container.RegisterType<IDataService, DataService>();}
Container.RegisterType<MainViewModel>(new ContainerControlledLifetimeManager());
![Page 14: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/14.jpg)
14
![Page 15: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/15.jpg)
15
![Page 16: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/16.jpg)
16
![Page 17: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/17.jpg)
17
<phone:PhoneApplicationPagex:Class="MvvmLiteRTM.MainPage"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:vm="clr-namespace:MvvmLiteRTM.ViewModel"DataContext="{Binding Main, Source={StaticResource Locator}}"shell:SystemTray.IsVisible="True“>
![Page 18: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/18.jpg)
18
<Button Content=“ZoomIn" Height="72" Name=“ZoomInButton"><i:Interaction.Triggers>
<i:EventTrigger EventName="Click"><cmd:EventToCommand Command="{Binding ZoomInCommand}"/>
</i:EventTrigger></i:Interaction.Triggers>
</Button>
![Page 19: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/19.jpg)
19
RelayCommand ZoomOutCommand = new RelayCommand(() =>{
MapZoomLevel--;}
);
![Page 20: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/20.jpg)
20
View
ViewModelView
ViewModel
View
ViewModelMessages
Messages
+ callback
![Page 21: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/21.jpg)
21
private void SendMessageWithCallback(){
Messenger.Default.Send(new NotificationMessageAction<string>("Hello, call me back",SendMessageCallback));
}
private void SendMessageCallback(string message){
...}
![Page 22: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/22.jpg)
22
private NotificationMessageAction<string> _lastMessage;
public void MessageRecipient(){
Messenger.Default.Register<NotificationMessageAction<string>>(this, m =>{
MessageTextBox.Text = m.Notification;_lastMessage = m;
// Execute callback with parameter_lastMessage.Execute(MessageTextBox.Text);
});}
![Page 23: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/23.jpg)
http://ultralightmvvm.codeplex.com/
http://mvvmlight.codeplex.com/
http://catel.codeplex.com/
http://caliburnmicro.codeplex.com/
http://www.japf.fr/silverlight/mvvm/index.html23
![Page 24: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/24.jpg)
24
![Page 25: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/25.jpg)
25
![Page 26: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/26.jpg)
26
![Page 27: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/27.jpg)
27
View Model
View
IFeature
Feature
Injection
![Page 28: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/28.jpg)
28
![Page 29: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/29.jpg)
29
![Page 30: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/30.jpg)
30
![Page 31: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений](https://reader033.vdocuments.mx/reader033/viewer/2022052602/559b25cc1a28ab4f488b46f4/html5/thumbnails/31.jpg)
http://create.msdn.com
http://silverlight.codeplex.com/
Model-View-ViewModel (MVVM) Explained
WPF Apps With The Model-View-ViewModel Design Pattern - Josh Smith
http://nrumyantsev.com/
31