0

Я пишу WPF приложение, используя паттерн MVVM.

Есть контейнер в XAML(StackPanel), я должен по нажатию кнопки добавлять в него элементы: StackPanelы, и в каждом Button, TextBlock и CheckBox.

Я решил для этого использовать DataTemplate, погуглив, самое понятное, что я нашёл для себя этот пример: metanit.com Насколько я знаю, в MVVM паттерне нельзя чтобы View знала о ViewModel или Model. Так вот в этом примере напрямую обращаются(MainWindow.cs) к списку из View phonesList.ItemsSource = Phones;.

Как правильно решить мою проблему, стоит для этого использовать DataTemplate или есть другое(более правильное) решение? Как в рамках MVVM добавить элементы на View, не обращаясь к ним напрямую?

  • 1
    Если брать тот код, что на метаните, то уберите все Path= (бессмысленны они), дальше замените phonesList.ItemsSource = Phones; на DataContext = this; (но это не правильно, создайте лучше отдельный класс, куда вынесите все данные и в App классе задавайте DataContext). Ну и последнее, что остается, это заменить x:Name="phonesList" на ItemsSource = "{Binding Phones}". Все, у вас почти чистый MVVM, остается убрать событие, привязав выделенный элемент к своему свойству (ибо использовать так события - нарушение MVVM). – EvgeniyZ May 07 '20 at 13:08
  • Ваш комментарий я бы отметил как ответ! – DiMaAgalakov May 07 '20 at 13:30
  • Вы можете сами написать ответ, указав там то, что у вас получилось, я не против. А так, подобных ответов на SO полно, думаю можно было бы найти дубликат. – EvgeniyZ May 07 '20 at 13:38

0 Answers0