31
Braintree http://www.nrumyantsev.com/

Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

Embed Size (px)

Citation preview

Page 1: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

Braintreehttp://www.nrumyantsev.com/

Page 2: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

2

Page 3: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

3

Page 4: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

4

Page 5: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

5

Model View

Controller

Page 6: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

6

Model View

Presentation Model

(ViewModel)

DataBinding

Page 7: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

7

Page 8: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

8

Page 9: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

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 приложений

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 приложений

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 12: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

http://unity.codeplex.com

12

Page 13: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

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 приложений

14

Page 15: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

15

Page 16: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

16

Page 17: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

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 приложений

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 приложений

19

RelayCommand ZoomOutCommand = new RelayCommand(() =>{

MapZoomLevel--;}

);

Page 20: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

20

View

ViewModelView

ViewModel

View

ViewModelMessages

Messages

+ callback

Page 21: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

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 приложений

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 приложений

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 приложений

24

Page 25: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

25

Page 26: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

26

Page 27: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

27

View Model

View

IFeature

Feature

Injection

Page 28: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

28

Page 29: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

29

Page 30: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

30

Page 31: Применение шаблона проектирования MVVM при разработке архитектуры Windows Phone 7 приложений

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/

[email protected]

31