Necesito averiguar cómo comunicarme entre ViewModels. Soy nuevo en MVVM así que sea amable.Patrón de MVVM, pregunta de ViewModel DataContext
Aquí hay una callados ejemplo
definiciones de clases (se supone que he enganchado caso Child.PropertyChanged en el ParentViewModel):
public class ParentViewModel : ViewModelBase
{
public ChildViewModel Child { get; set; }
}
public class ChildViewModel : ViewModelBase
{
String _FirstName;
public String FirstName
{
get { return _FirstName; }
set
{
_FirstName = value;
OnPropertyChanged("FirstName");
}
}
}
Esto es lo que se ve en el diccionario de recursos
<DataTemplate DataType="{x:Type vm:ParentViewModel}">
<vw:ParentView/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ChildViewModel}">
<vw:ChildView/>
</DataTemplate>
y el código detrás de ChildView:
public partial class ChildView : UserControl
{
public QueueView()
{
InitializeComponent();
DataContext = new ChildViewModel();
}
}
El problema obvio es que cuando se crea una instancia de ChildView (a través de la selección de DataTemplate) crea una nueva clase ChildViewModel y ParentViewModel no tiene acceso a ella.
Entonces, ¿cómo puedo crear una instancia del DataContext de la Vista para que sea el ViewModel original que provocó que se seleccionara DataTemplate?
Una solución obvia es fusionar las propiedades en el modelo de ChildView en el modelo de ParentView, pero prefiero separarlo para su reutilización.
Estoy seguro de que la respuesta es trivial, solo me gustaría saber de qué se trata. :)
Gracias de antemano.
Por cierto, supongo que cambiaste los nombres de tus clases para simplificar el ejemplo ... El nombre de clase para "ChildView" en el código detrás es "QueueView" en su lugar. –
¿Fue esto un error tipográfico? –
Sí, esto era un error tipográfico. lo siento :) – Jose