mvvmlight galasoft wpf mvvm-light

galasoft - Agregar controles dinĂ¡micamente en WPF MVVM



mvvmcross (3)

Soy relativamente nuevo en MVVM y WPF, solo quiero un guiño en la dirección correcta.

Estoy trabajando en una vista de búsqueda dinámica en la que hacer clic en un botón debería agregar una nueva fila que contenga 3 combobox y 2 cuadros de texto. ¿Cómo debo hacer esto? Gracias.


Si eres nuevo en MVVM y WPF, hay un video tutorial realmente maravilloso sobre cómo diseñar una aplicación C # / WPF / MVVM por Jason Dollinger que está disponible aquí en lab49 . Todo el código fuente que desarrolla en este increíble video está disponible también aquí en lab49.

Después de verlo, no tendrá problemas para desarrollar la vista de búsqueda con seguridad.


si realmente quieres hacer mvvm, intenta olvidar "cómo puedo agregar controles". no tienes que hacerlo, solo piensa en tus viewmodels - WPF crea los controles para ti :)

en su 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 tienes que pensar en controles de usuario / vista. en su SearchView, crea un ItemsControl y vincula el ItemsSource a MySearchItems.

<ItemsControl ItemsSource="{Binding MySearchItems}"/>

Ahora verá todos sus modelos SearchEntryView en ItemsControl (solo la atm de ToString ()).

Para ajustarse a sus requisitos para mostrar cada SearchEntryViewmodel con 3Comboboxes y demás, solo tiene 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 nunca tienes que pensar en cómo puedo agregar controles dinámicamente. 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.


Una opción es que puede crear cuadros de texto y cuadros combinados en back-end creando un nuevo instanse. Pero la mejor opción es que puede crear un control de usuario que contenga todos los texboxes y cuadros combinados que desee agregar y en qué formato desea. Después de crear cuando se presiona el botón, puede crear un insta de este control de usuario y configurarlo en la grilla o cualquier otro control usando la propiedad SetValue del control.

Si es nuevo en WPF y MVVM, lea estos blogs para entender esto.

https://radhikakhacharia.wordpress.com/2012/06/01/wpf-tutorial-3/

https://radhikakhacharia.wordpress.com/2012/02/13/model-view-viewmodel/