Мы используем для наших программ подход MVVM. Хотя детали могут отличаться от программы к программе, MVVM обычно состоит из 3 основных частей.
Модель:
Это ваш объект данных. Это могут быть бизнес-данные, такие как
class Account
{
string Name {get;set;}
string Address {get;set;
}
, но также могут быть данные пользовательского интерфейса, такие как:
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 ); }
}
Вид:
Является ли частью wpf это пользовательские элементы управления, пользовательские элементы управления, окна, шаблоны данных и т. Д.
Несмотря на распространенное мнение, хорошо иметь код позади для просмотра, в противном случае вам придется наклоняться над обратными словами только потому, что вы слышали, что у представления не может быть кода.
Обычный подход теперь состоит в том, чтобы создать модель, одну или несколько моделей представления и установить эти модели представления как DataContext
в вашем представлении. Иногда вам нужен DataTemplate для отображения данных, например, DataTemplate для нашей AccountViewModel.
<DataTemplate DataType="{x:Type AccountViewModel}">
<StackPanel>
<TextBox Text="{Binding Name}/>
<Button Content="Save" Command="{Binding SaveAccount}"/>
</StackPanel>
</DataTemplate>
Эта конструкция интенсивно использует привязку данных, которая является фундаментальной для MVVM и работает довольно хорошо. Конечно, может возникнуть пара проблем: Как работать с коллекцией с моделями? Как обрабатывать события в моделях просмотра, поступающих из интерфейса? Как хранить мои данные?
Но для этого вы найдете много ресурсов здесь и в Интернете. Но этот ответ должен дать вам общее представление о том, как я и многие другие люди работаем с WPF.