Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
türü ObservableRecipient , iletilerin alıcısı olarak da davranan gözlemlenebilir nesneler için temel bir sınıftır. Bu sınıf, ObservableObject sınıfının bir uzantısıdır ve ayrıca IMessenger türünü kullanmak için yerleşik destek sunar.
Platform API'leri:
ObservableRecipient,ObservableObject,IMessenger,WeakReferenceMessenger,IRecipient<TMessage>,PropertyChangedMessage<T>
Nasıl çalışır?
ObservableRecipient türü, IMessenger özelliklerini de kullanan görünüm modelleri için taban sınıfı olarak kullanılmak üzere tasarlanmıştır, çünkü bunlar için yerleşik destek sunar. Özellikle:
- Hem parametresiz bir oluşturucusu hem de bağımlılık enjeksiyonunda kullanılmak üzere bir
IMessengerörneği alan bir oluşturucusu vardır. Ayrıca, görünüm modelinde ileti göndermek ve almak için kullanılabilecek birMessengerözelliği de kullanıma sunar. Parametresiz oluşturucu kullanılırsa,WeakReferenceMessenger.Defaultörnek özelliğineMessengeratanır. - Görünüm modelini etkinleştirmek/devre dışı bırakmak için bir
IsActiveözelliği kullanıma sunar. Bu bağlamda, "etkinleştirmek", belirli bir görünüm modelinin kullanımda olarak işaretlenmesi anlamına gelir; böylece örneğin kayıtlı iletileri dinlemeye başlar, diğer başlatma işlemlerini gerçekleştirir vb. Özelliğin değeri değiştiğinde çağrılan,OnActivatedveOnDeactivatedolmak üzere ilişkili iki yöntem vardır. Varsayılan olarak,OnDeactivatedgeçerli örneğin kaydını tüm kayıtlı iletilerden otomatik olarak kaldırır. En iyi sonuçları elde etmek ve bellek sızıntılarını önlemek için, iletilereOnActivatedkaydolmak ve temizleme işlemleri yapmak için kullanılmasıOnDeactivatedönerilir. Bu düzen, bir görünüm modelinin birden çok kez etkinleştirilmesine/devre dışı bırakılmasına olanak tanırken, her devre dışı bırakıldığında bellek sızıntısı riski olmadan toplamanın güvenli olmasını sağlar. Varsayılan olarak,OnActivatedarabirim aracılığıylaIRecipient<TMessage>tanımlanan tüm ileti işleyicilerini otomatik olarak kaydeder. -
Messengerözelliğinden erişilebilenIMessengerörneği aracılığıyla birPropertyChangedMessage<T>mesajı gönderen birBroadcast<T>(T, T, string)yöntemi sunar. Bu, kullanmak için birMessengerörneğini manuel olarak almaya gerek kalmadan görünüm modelinin özelliklerindeki değişiklikleri kolayca yayınlamak için kullanılabilir. Bu yöntem, ayrıca bir iletinin gönderilip gönderilmeyeceğini belirtmek için ek birbool broadcastözelliğine sahip çeşitliSetPropertyyöntemlerinin aşırı yüklenmiş sürümleri tarafından kullanılır.
Etkin olduğunda LoggedInUserRequestMessage iletilerini alan bir görünüm modeli örneği aşağıda verilmiştir:
public class MyViewModel : ObservableRecipient, IRecipient<LoggedInUserRequestMessage>
{
public void Receive(LoggedInUserRequestMessage message)
{
// Handle the message here
}
}
Yukarıdaki örnekte, OnActivated, bu yöntemi çağrılacak eylem olarak kullanarak örneği LoggedInUserRequestMessage iletileri için otomatik olarak alıcı olarak kaydeder. Arabirimin IRecipient<TMessage> kullanılması zorunlu değildir ve kayıt el ile de yapılabilir (yalnızca satır içi lambda ifadesi kullanılarak bile):
public class MyViewModel : ObservableRecipient
{
protected override void OnActivated()
{
// Using a method group...
Messenger.Register<MyViewModel, LoggedInUserRequestMessage>(this, (r, m) => r.Receive(m));
// ...or a lambda expression
Messenger.Register<MyViewModel, LoggedInUserRequestMessage>(this, (r, m) =>
{
// Handle the message here
});
}
private void Receive(LoggedInUserRequestMessage message)
{
// Handle the message here
}
}
Examples
- MVVM Araç Seti'ni uygulamada görmek için örnek uygulamaya (birden çok UI çerçevesi için) göz atın.
- Birim testlerinde daha fazla örnek de bulabilirsiniz.
MVVM Toolkit