Мы используем для наших программ MVVM подхода. Хотя детали могут отличаться от программы к программе, MVVM обычно создается с тремя основными частями.
Модель: Это объект данных. Это может быть бизнес-данные, такие как
class Account
{
string Name {get;set;}
string Address {get;set;
}
, но также может быть UI данные, как:
class Window
{
Point Position {get;set;}
Size Size {get;set;}
}
Эти объекты для хранения данных, больше ничего. Нет событий, нет команд без методов (это одна точка, где различная интерпретация MVVM отличается).
ViewModel: Это должно обернуть модель и обеспечить логику вокруг базовой модели. Этот класс также используется для преобразования свойства бизнес-модели в понятное свойство представления.
class AccountViewModel
{
public AccountViewModel(Account aWrappedModel)
{
}
string Name {get {return Model.Name;} }
AddressObject Address { get{ return new AddressObject(Model.Address); }
}
Вид:
ли МОФ часть это может быть пользовательские элементы управления, пользовательские элементы управления, окна, DataTemplates и т.д. Несмотря на общий взгляд, его штраф, чтобы иметь код позади для просмотра в противном случае у вас есть сгибать заслонки только потому, что вы слышали, что в представлении не разрешено иметь код.
Обычный подход теперь состоит в том, чтобы создать модель, одну или несколько моделей просмотра и установить эти режимы просмотра как DataContext
на ваш взгляд. Иногда вам нужен DataTemplate для отображения данных, например DataTemplate для нашего AccountViewModel.
<DataTemplate DataType="{x:Type AccountViewModel}">
<StackPanel>
<TextBox Text="{Binding Name}/>
<Button Content="Save" Command="{Binding SaveAccount}"/>
</StackPanel>
</DataTemplate>
Этот дизайн сильно использует привязку данных, которая является основополагающей для MVVM и работает довольно хорошо. Конечно, может возникнуть пара проблем, например: Как обрабатывать коллекцию с помощью моделей? Как обрабатывать события в моделях, исходящих из ui? Как хранить данные?
Но для этого вы найдете много ресурсов здесь и в Интернете. Но этот ответ должен дать вам приблизительный обзор того, как я и многие другие люди работают с WPF.
Интересно, можете ли вы указать мне место для учебника/статьи, в котором показано небольшое примерное приложение, сделанное с учетом MVVM? – Tower
Я добавил несколько примеров, которые, кажется, хороши для меня, но я никогда не пытался учиться этому, поэтому я не гарантирую. Я бы начал работать с документацией. Всегда есть страница «Начало работы» или просто. – Pein
@rFactor: Это хорошее место для запуска http://msdn.microsoft.com/en-us/magazine/dd419663.aspx – Grokys