Я пишу WPF приложение, используя паттерн MVVM.
Есть контейнер в XAML(StackPanel), я должен по нажатию кнопки добавлять в него элементы: StackPanelы, и в каждом Button, TextBlock и CheckBox.
Я решил для этого использовать DataTemplate, погуглив, самое понятное, что я нашёл для себя этот пример: metanit.com Насколько я знаю, в MVVM паттерне нельзя чтобы View знала о ViewModel или Model. Так вот в этом примере напрямую обращаются(MainWindow.cs) к списку из View phonesList.ItemsSource = Phones;.
Как правильно решить мою проблему, стоит для этого использовать DataTemplate или есть другое(более правильное) решение? Как в рамках MVVM добавить элементы на View, не обращаясь к ним напрямую?
Path=(бессмысленны они), дальше заменитеphonesList.ItemsSource = Phones;наDataContext = this;(но это не правильно, создайте лучше отдельный класс, куда вынесите все данные и в App классе задавайтеDataContext). Ну и последнее, что остается, это заменитьx:Name="phonesList"наItemsSource = "{Binding Phones}". Все, у вас почти чистый MVVM, остается убрать событие, привязав выделенный элемент к своему свойству (ибо использовать так события - нарушение MVVM). – EvgeniyZ May 07 '20 at 13:08