Паттерны быстрой разработки wpf mvvm бизнес-приложений

12
Паттерны быстрой разработки WPF MVVM бизнес-приложений. (Несколько типовых задач, возникающих при разработке бизнесприложений на платформе WPF, и эффективные способы решения этих задач, воплощенные в DevExpress Scaffolding Wizard инструменте быстрой разработки CRUD и LOB приложений.)

Upload: gosharp

Post on 17-Jul-2015

169 views

Category:

Technology


11 download

TRANSCRIPT

Page 1: Паттерны быстрой разработки WPF MVVM бизнес-приложений

Паттерны быстрой разработки WPF MVVM бизнес-приложений.

(Несколько  типовых  задач,  возникающих  при  разработке  бизнес-­‐приложений  на  платформе  WPF,  

и  эффективные  способы  решения  этих  задач,  воплощенные  в  

DevExpress  Scaffolding  Wizard  -­‐  инструменте  быстрой  разработки  CRUD  и  LOB  приложений.)  

 

Page 2: Паттерны быстрой разработки WPF MVVM бизнес-приложений

1. Бизнес-­‐приложения,  CRUD-­‐приложения,  DevExpress  Scaffolding.  

2. Навигация  в  приложении.  3. Простая  асинхронная  загрузка  данных.  4. Асинхронная  загрузка  данных  и  lazy  loading  navigaYon  properYes.  

5. Instant  Feedback  Mode  6. Формы  редактирования.  WPF  bindings  and  EnYty  Framework  objects.  

Page 3: Паттерны быстрой разработки WPF MVVM бизнес-приложений

Приложения  

CRUD-­‐приложения  

Приложения,  созданные  с  помощью  DevExpress  Scaffolding  Wizard  

CRUD-­‐приложения  

Page 4: Паттерны быстрой разработки WPF MVVM бизнес-приложений

CRUD-­‐приложения  

Структура наскафолженного приложения

Page 5: Паттерны быстрой разработки WPF MVVM бизнес-приложений

IDocumentManagerService IDocument CreateDocument(

string documentID, object parentViewModel);

IDocument ActiveDocument { get; }

IEnumerable<IDocument> Documents { get; }

IDocument object Content { get; }

void Close();

Навигация.  

Page 6: Паттерны быстрой разработки WPF MVVM бизнес-приложений

IDocumentManagerService IDocument CreateDocument(

string documentID, object parentViewModel);

IDocument ActiveDocument { get; }

IEnumerable<IDocument> Documents { get; }

IDocument object Content { get; }

void Close();

Навигация.  

Page 7: Паттерны быстрой разработки WPF MVVM бизнес-приложений

Main  View  Model  

EnYty  CollecYon  View  Model  

EnYty  View  Model  

Tabbed  MDI  DocumentManagerService  

Навигация.  

Page 8: Паттерны быстрой разработки WPF MVVM бизнес-приложений

Tabbed  MDI  DocumentManagerService  

Main  View  Model  

EnYty  CollecYon  View  Model  

EnYty  View  Model  

Windowed  DocumentManagerService  

Навигация.  

Page 9: Паттерны быстрой разработки WPF MVVM бизнес-приложений

Простая  асинхронная  загрузка.  

Page 10: Паттерны быстрой разработки WPF MVVM бизнес-приложений

Асинхронная  загрузка  и  EnYty  Framework.  

class  Order  {          long  Id;          decimal  Discount;          decimal  UnitPrice;          byte[]  Picture;          int  Quantity;          long  ProductId;          virtual  Product  Product;  }  

class  Product  {          long  Id;          string  Name;          byte[]  Picture;          string  QuantityPerUnit;          double  UnitPrice;          string  Description;  }  

class  OrderInfo  {          long  Id;          decimal  UnitPrice;          int  Quantity;          string  ProductName;  }  

Id  =  x.Id  

UnitPrice  =  x.UnitPrice  

QuanYty  =  x.QuanYty  

ProductName  =  x.ProductName  

.Select(x  =>  new  OrderInfo()  {  …  })  Repository  EnYty   ProjecYon  EnYty  

Page 11: Паттерны быстрой разработки WPF MVVM бизнес-приложений

Data  Layer  

View  Model  

Data  Grid  Control  

IQueryable  

Async  Loading  

ObservableCollecYon  

Data  Layer  

View  Model  

Data  Grid  Control  

IQueryable  

EnYty  

SelectedItem   ItemsSource   SelectedItem   ItemsSource  

Async  Loading  

SelectedEnYty   SelectedEnYty  

Instant  Feedback  Mode.  

Page 12: Паттерны быстрой разработки WPF MVVM бизнес-приложений

EnYty  Framework.  Редактирование  enYty.  

•  Обновление  эдиторов  на  форме  при  изменении  свойства  enYty  

<dxe:TextEdit  EditValue="{Binding  Entity.Name,   UpdateSourceTrigger=PropertyChanged,    ValidatesOnDataErrors=True,    NotifyOnSourceUpdated=True}"  />

•  Обновление  состояния  вьюмодели  при  изменении  enYty  эдитором    

<dxe:TextEdit  EditValue="{Binding  Entity.Name,   UpdateSourceTrigger=PropertyChanged,    ValidatesOnDataErrors=True,    NotifyOnSourceUpdated=True}"  />