ViewModels arasında nasıl iletişim kuracağımı bulmam gerek. Ben MVVM için yeniyim, lütfen nazik ol. İşte MVVM Pattern, ViewModel DataContext soru
bir dumbed ömeğisınıf tanımları (Ben ParentViewModel içinde Child.PropertyChanged olayı bağımlısı olduğu düşünülerek) var: Burada kaynak sözlükte bakın ne
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");
}
}
}
<DataTemplate DataType="{x:Type vm:ParentViewModel}">
<vw:ParentView/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ChildViewModel}">
<vw:ChildView/>
</DataTemplate>
ve ChildView'ın arkadaki kodu:
public partial class ChildView : UserControl
{
public QueueView()
{
InitializeComponent();
DataContext = new ChildViewModel();
}
}
Açık olan sorun, ChildView'ın başlatılmasıyla (DataTemplate'den seçim) yeni bir ChildViewModel sınıfı oluşturması ve ParentViewModel'in ona erişimi olmamasıdır.
Peki, DataTemplate'in seçilmesine neden olan özgün ViewModel olmak için Görünümün DataContext'ini nasıl uygulayabilirim?
Açık bir düzeltme, ChildViewModel'deki özellikleri ParentViewModel'e yerleştirmektir, ancak yeniden kullanmak için ayırmak isterim.
Cevabın önemsiz olduğundan eminim, sadece ne olduğunu bilmek istiyorum. :)
Önceden teşekkürler.
DataContext = new ChildViewModel();
bakış DataContext
WPF tarafından otomatik olarak ayarlanacaktır:
Bu arada, örneği basitleştirmek için sınıflarınızın adlarını değiştirdiğinizi varsayalım. Kodun arkasındaki "ChildView" sınıf adı bunun yerine "QueueView" dır. –
Bu bir yazım hatası mıydı? –
Evet, bu bir yazım hatasıydı. pardon :) – Jose