jeśli naprawdę chcesz zrobić MVVM, starają się zapomnieć "Jak mogę dodać kontroli". nie musisz, po prostu pomyśl o swoich modelach - WPF tworzymy dla ciebie kontrole :)
w twoim przypadku powiedzmy, że mamy SearchViewModel i SearchEntryViewmodel.
public class SearchEntryViewmodel
{
//Properties for Binding to Combobox and Textbox goes here
}
public class SearchViewModel
{
public ObservableCollection<SearchEntryViewmodel> MySearchItems {get;set;}
public ICommand AddSearchItem {get;}
}
do tej pory nie musisz myśleć o sterowaniu użytkownika/widoku. w swoim SearchView tworzysz ItemsControl i wiąże ItemSource z MySearchItems.
<ItemsControl ItemsSource="{Binding MySearchItems}"/>
widać teraz wszystkie swoje SearchEntryViewmodels w ItemsControl (tylko toString() atm).
Aby dopasować swoje wymagania, aby pokazać każdy SearchEntryViewmodel z 3Comboboxes i tak dalej po prostu trzeba zdefiniować DataTemplate w zasobach
<DataTemplate DataType="{x:Type local:SearchEntryViewmodel}">
<StackPanel Orientation="Horizontal">
<Combobox ItemsSource="{Binding MyPropertyInSearchEntryViewmodel}"/>
<!-- the other controls with bindings -->
</StackPanel>
</DataTemplate>
to wszystko :) i nigdy nie myśleć o tym, w jaki sposób można dodać elementy sterujące dynamicznie. musisz tylko dodać nowy SearchEntryViewmodel do swojej kolekcji.
to podejście nazywa się Viewmodel First i uważam, że jest to najprostszy sposób na wykonanie MVVM.
Dzięki. Znalazłem to podejście, gdy szukałem w sieci. Dobrze wiedzieć, że byłem na dobrej drodze. – spiritqueen