si realmente quiere hacer MVVM, tratar de olvidar "¿Cómo puedo agregar controles". no tienes que hacerlo, solo piensa en tus viewmodels - WPF crea los controles para ti :)
en tu caso digamos que tenemos un SearchViewModel y un 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;}
}
hasta ahora no tiene que pensar en usercontrols/view. en su SearchView, crea un ItemsControl y vincula el ItemsSource a MySearchItems.
<ItemsControl ItemsSource="{Binding MySearchItems}"/>
que ver ahora todas sus SearchEntryViewmodels en ItemsControl (sólo el ToString() atm).
para satisfacer sus requisitos para mostrar todos los SearchEntryViewmodel con 3Comboboxes y así sucesivamente sólo hay que definir un DataTemplate en sus Recursos
<DataTemplate DataType="{x:Type local:SearchEntryViewmodel}">
<StackPanel Orientation="Horizontal">
<Combobox ItemsSource="{Binding MyPropertyInSearchEntryViewmodel}"/>
<!-- the other controls with bindings -->
</StackPanel>
</DataTemplate>
eso es todo :) y usted nunca tiene que pensar en cómo puedo agregar controles dinamicamente. solo tiene que agregar un nuevo SearchEntryViewmodel a su colección.
este enfoque se llama Viewmodel First y creo que es la forma más fácil de hacer MVVM.
Gracias. Encontré este enfoque mientras buscaba en la red. Es bueno saber que estaba en el camino correcto. – spiritqueen