Potrzebuję dowiedzieć się, jak komunikować się między ViewModels. Jestem nowy w MVVM, więc proszę bądź uprzejmy.Wzór MVVM, pytanie DataModel DataContext
Oto dumbed dół Przykład
definicje klasy (zakładając, że mam podpięty zdarzenie Child.PropertyChanged w 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");
}
}
}
Oto, co można zobaczyć w słowniku zasobów
<DataTemplate DataType="{x:Type vm:ParentViewModel}">
<vw:ParentView/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ChildViewModel}">
<vw:ChildView/>
</DataTemplate>
i kod identyfikatora ChildView:
public partial class ChildView : UserControl
{
public QueueView()
{
InitializeComponent();
DataContext = new ChildViewModel();
}
}
Oczywistym problemem jest to, że po utworzeniu instancji ChildView (poprzez wybór z DataTemplate) tworzy ona nową klasę ChildViewModel i ParentViewModel nie ma do niej dostępu.
Jak utworzyć instancję DataContext widoku jako oryginalny ViewModel, który spowodował wybór DataTemplate?
Oczywistym rozwiązaniem jest zminiaturyzowanie właściwości w ChildViewModel do ParentViewModel, ale wolałbym go oddzielić, ponieważ do ponownego użycia.
Jestem pewien, że odpowiedź jest banalna, po prostu chciałbym wiedzieć, co to jest. :)
Z góry dziękuję.
Przy okazji, zakładam, że zmieniliście nazwy swoich klas w celu uproszczenia przykładu ... Zamiast tego nazwa klasy dla "ChildView" w kodzie jest "QueueView". –
Czy to była literówka? –
Tak, to był błąd. przepraszam :) – Jose