Паттерны быстрой разработки wpf mvvm бизнес-приложений
TRANSCRIPT
![Page 1: Паттерны быстрой разработки WPF MVVM бизнес-приложений](https://reader030.vdocuments.net/reader030/viewer/2022012405/55a92bfa1a28ab8a3e8b46dd/html5/thumbnails/1.jpg)
Паттерны быстрой разработки WPF MVVM бизнес-приложений.
(Несколько типовых задач, возникающих при разработке бизнес-‐приложений на платформе WPF,
и эффективные способы решения этих задач, воплощенные в
DevExpress Scaffolding Wizard -‐ инструменте быстрой разработки CRUD и LOB приложений.)
![Page 2: Паттерны быстрой разработки WPF MVVM бизнес-приложений](https://reader030.vdocuments.net/reader030/viewer/2022012405/55a92bfa1a28ab8a3e8b46dd/html5/thumbnails/2.jpg)
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 бизнес-приложений](https://reader030.vdocuments.net/reader030/viewer/2022012405/55a92bfa1a28ab8a3e8b46dd/html5/thumbnails/3.jpg)
Приложения
CRUD-‐приложения
Приложения, созданные с помощью DevExpress Scaffolding Wizard
CRUD-‐приложения
![Page 4: Паттерны быстрой разработки WPF MVVM бизнес-приложений](https://reader030.vdocuments.net/reader030/viewer/2022012405/55a92bfa1a28ab8a3e8b46dd/html5/thumbnails/4.jpg)
CRUD-‐приложения
Структура наскафолженного приложения
![Page 5: Паттерны быстрой разработки WPF MVVM бизнес-приложений](https://reader030.vdocuments.net/reader030/viewer/2022012405/55a92bfa1a28ab8a3e8b46dd/html5/thumbnails/5.jpg)
IDocumentManagerService IDocument CreateDocument(
string documentID, object parentViewModel);
IDocument ActiveDocument { get; }
IEnumerable<IDocument> Documents { get; }
IDocument object Content { get; }
void Close();
Навигация.
![Page 6: Паттерны быстрой разработки WPF MVVM бизнес-приложений](https://reader030.vdocuments.net/reader030/viewer/2022012405/55a92bfa1a28ab8a3e8b46dd/html5/thumbnails/6.jpg)
IDocumentManagerService IDocument CreateDocument(
string documentID, object parentViewModel);
IDocument ActiveDocument { get; }
IEnumerable<IDocument> Documents { get; }
IDocument object Content { get; }
void Close();
Навигация.
![Page 7: Паттерны быстрой разработки WPF MVVM бизнес-приложений](https://reader030.vdocuments.net/reader030/viewer/2022012405/55a92bfa1a28ab8a3e8b46dd/html5/thumbnails/7.jpg)
Main View Model
EnYty CollecYon View Model
EnYty View Model
Tabbed MDI DocumentManagerService
Навигация.
![Page 8: Паттерны быстрой разработки WPF MVVM бизнес-приложений](https://reader030.vdocuments.net/reader030/viewer/2022012405/55a92bfa1a28ab8a3e8b46dd/html5/thumbnails/8.jpg)
Tabbed MDI DocumentManagerService
Main View Model
EnYty CollecYon View Model
EnYty View Model
Windowed DocumentManagerService
Навигация.
![Page 9: Паттерны быстрой разработки WPF MVVM бизнес-приложений](https://reader030.vdocuments.net/reader030/viewer/2022012405/55a92bfa1a28ab8a3e8b46dd/html5/thumbnails/9.jpg)
Простая асинхронная загрузка.
![Page 10: Паттерны быстрой разработки WPF MVVM бизнес-приложений](https://reader030.vdocuments.net/reader030/viewer/2022012405/55a92bfa1a28ab8a3e8b46dd/html5/thumbnails/10.jpg)
Асинхронная загрузка и 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 бизнес-приложений](https://reader030.vdocuments.net/reader030/viewer/2022012405/55a92bfa1a28ab8a3e8b46dd/html5/thumbnails/11.jpg)
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 бизнес-приложений](https://reader030.vdocuments.net/reader030/viewer/2022012405/55a92bfa1a28ab8a3e8b46dd/html5/thumbnails/12.jpg)
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}" />