Revisé esta web y google y las soluciones no funcionaron para mí.Uso del DataContext del padre (WPF - Encuadernación de comandos del menú dinámico)
Tengo un comando en el ViewModel de un UserControl. Bueno, el usercontrol tiene un ItemsControl enlazado a un ObservableCollection. Dentro de DataTemplate de ItemsControl.ItemTemplate tengo un botón y quiero usar el comando. No puedo vincular el comando porque dentro de DataTemplate, el contexto de datos no es ViewModel, sino un elemento de ObservableCollection.
La pregunta es: ¿Cómo puedo vincular el botón al comando si se pierde el contexto de datos padre?
Creo que esto necesita una solución fácil porque creo que este es un problema común.
imaginar esto sceneario:
usted tiene un artículo ListBox con un ObservableCollection como el ItemsSource, por lo que están utilizando un DataTemplate dentro del cuadro de lista para cada elemento de la colección. Bueno, quiere eliminar el elemento seleccionado y pone un botón en cada fila para ese trabajo. ¿Cómo haces eso?
En el MVP, puedo hacer esto en el evento clic del botón:
Button but = e.Source as Button;
if (but != null)
Presenter.ActualNote = but.DataContext as Note;
En resumen. Envía el contexto de datos de la fila (el elemento seleccionado) al presentador.
Pero, ¿cómo puedo hacerlo a la manera mvvm? Porque necesito usar un comando pero no puedo asignar el comando al botón porque el botón no sabe nada sobre ViewModel (donde existe el comando).
Como puede ver, el botón debe existir dentro de la plantilla de datos, entonces el contexto de datos ya no es el ViewModel .... Por eso necesito acceder al DataContext del padre para acceder al comando.
Espero que entienda mejor mi problema.
Gracias.
: P. Estoy buscando una buena solución sin romper mvvm: P, pero gracias, es una solución: P –
Soy un desarrollador SL, por lo que romper mvvm es el par para el curso :) – geofftnz
¿Por qué está usando SL! = MVVM? – user112889