MVVM ışık araç setinde Mesajlaşma sistemi üzerinde bunu okumak-up öneriyoruz. Bu, bunu başarmak için bulduğum en basit yaklaşım gibi görünüyor.Eğer 2 görünüm modellerini varsa
- arayan müşteriler için 1, seçilen müşteri hakkında ekran detaylar için diğer:: Şu şekilde çalışır bir örnektir
ilk görünümü modelinde, bir özelliği gibi var
void registerForMessages()
{
Messenger.Default.Register<PropertyChangedMessage<string>>(this,
(pcm) =>
{
if (pcm.PropertyName == "CustomerID")
{
customerID = pcm.NewValue;
AddWorkplanCommand.RaiseCanExecuteChanged();
loadCustomerDetails();
}
});
}
olun: Bu: Bunun gibi diğer bu değer değişiklikleri, ne zaman
public string CustomerID
{
get
{
return _customerid;
}
set
{
if (_efolderid == value)
{
return;
}
var oldValue = _customerid;
_customerid = value;
// Update bindings and broadcast change using GalaSoft.MvvmLight.Messenging
RaisePropertyChanged("CustomerID", oldValue, value, true);
}
}
Daha sonra, ikinci görüş modelinde, mesajları alma için kayıt ikinci görünüm modelinin yapıcısında registerForMessages() işlevini çağırdığınızdan emin olun. Yardımcı olan başka bir şey, uygulamanızda 4 veya daha fazla ViewModels bulunduğunuzda bir çeşit harita oluşturmaktır. Bulunduğum tüm mesajları ve neyi başarmak istediklerini ve bunları elde etmek için başka hangi görünüm modellerinin kaydedildiğini bulmak için, çözümdeki hızlı metin dosyasında bir tane oluşturmanın kolay olduğunu düşünüyorum.
Bu konuda gerçekten güzel olan şeylerden biri, 1 viewmodel'in customerID özelliği değişmiş gibi bir değişiklik bildirimi göndermesi ve hemen hemen diğer 4 farklı görünüm modelinin bu değişikliği ve tüm başlatma yüklemelerini kendilerinin değiştirdiğini anlamasıdır.
Sorularım, farklı görüntülerin yüklenmesine bağlı. Bir ViewModel ile bağlama mekanizmasını anlıyorum. Ancak, kullanıcı örneğin "Ayrıntıları Göster" düğmesini çalıştırdığında yeni bir Görünümü gösterecek kodu nereye yazarım? –