📌 Что такое MVVM?



💬 Спрашивают в 27 % собеседований



MVVM (Model-View-ViewModel) — это архитектурный шаблон, который разделяет приложение на три части: Model (данные и логика), View (интерфейс) и ViewModel (связь между Model и View).



🤔 Пример



Model

public class User

{

public string Name { get; set; }

public int Age { get; set; }

}




ViewModel

public class UserViewModel : INotifyPropertyChanged

{

private ObservableCollection<User> _users;

public ObservableCollection<User> Users

{

get { return _users; }

set

{

_users = value;

OnPropertyChanged(nameof(Users));

}

}



public UserViewModel()

{

Users = new ObservableCollection<User>

{

new User { Name = "John Doe", Age = 30 },

new User { Name = "Jane Doe", Age = 25 }

};

}



public event PropertyChangedEventHandler PropertyChanged;

protected void OnPropertyChanged(string propertyName)

{

PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));

}

}




View (XAML)

<Window x:Class="MVVMExample.MainWindow"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="MainWindow" Height="350" Width="525">

<Grid>

<ListBox ItemsSource="{Binding Users}">

<ListBox.ItemTemplate>

<DataTemplate>

<StackPanel>

<TextBlock Text="{Binding Name}" />

<TextBlock Text="{Binding Age}" />

</StackPanel>

</DataTemplate>

</ListBox.ItemTemplate>

</ListBox>

</Grid>

</Window>




Код за View (Code-behind)

public partial class MainWindow : Window

{

public MainWindow()

{

InitializeComponent();

DataContext = new UserViewModel();

}

}




🤔 Краткий ответ



MVVM разделяет приложение на Model (данные), View (интерфейс) и ViewModel (связь). Это улучшает тестируемость и поддержку кода.



🔥 ТОП ВОПРОСОВ С СОБЕСОВ



🔒 База собесов | 🔒 База тестовых