Pregunta

Estoy tratando de comprender el enfoque de diseño básico de MVVM cuando uso Control de artículos uniéndolo a través de Plantillas de datos a Colecciones observables en el modelo de vista.

He visto ejemplos que se unen a ObservableCollections de instrumentos de cuerda, Puntos de vista, y Ver modelos.

La unión a cuerdas parece ser sólo para población, es la vinculación a "ViewModels que contienen colecciones de ViewModels que contienen colecciones de ViewModels"Que el poder de WPF parece realmente salir a la luz.

Para aquellos que dominan el patrón MVVM, ¿cuál es su enfoque estándar para vincular ItemsControl, ListView, ListBox a colecciones en un ViewModel? Estoy buscando consejos de experiencias como esta:

  • Utilice siempre ObservableCollection<...> y nunca List<...> porque...
  • algo mejor que ItemsControl para mostrar una colección es...
  • Para que el filtrado funcione en su ViewModel en lugar del código subyacente, utilice...
  • utilizar colecciones de Vistas cuando...y colecciones de ViewModels cuando...
  • El 90% del tiempo creo un ItemsControl y lo vinculo a una ObservableCollection of Views que tiene sus propios ViewModels...
¿Fue útil?

Solución

Me gustaría utilizar un ObservableCollection de ViewModels por las siguientes razones:

  • ObservableCollection ya tiene eventos disponibles para la señalización cuando se ha modificado (por ejemplo, cuando se añaden elementos / eliminado de la colección).
  • Estamos en 'capa' el modelo de vista lo que proporciona una separación más limpia para tener un modelo de vista contiene una colección de ViewModels en lugar de Vistas
  • Si es necesario modificar u obtener datos de los elementos dentro de la colección se pueden modificar más fácilmente / acceder a esos datos si los artículos son ViewModels (si son vistas con frecuencia podrás ser de fundición de la vista o el acceso DataContext su interfaz de usuario elementos).

Otros consejos

Me gusta usar un ObservableCollection de ViewModels. La vista que se une a la colección puede definir un DataTemplate que da el modelo de vista de su aspecto. Esto conduce a menos de acoplamiento entre los componentes.

Tengo la misma pregunta, pero se sustituye la "vista" con el "modelo". :)

Tengo un modelo con una colección de otros modelos. Quiero que mi modelo de vista para tener una colección observable de otros ViewModels, pero una vez que crear una instancia de esa manera - se pierde la conexión entre el contenido de la colección del modelo. ¿Busco ahora que empezar a cablear todos los eventos de la colección observable ViewModels de nuevo a la colección de modelos?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top