IWeakEventListener.ReceiveWeakEvent(Type, Object, EventArgs) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Merkezi olay yöneticisinden olayları alır.
public:
bool ReceiveWeakEvent(Type ^ managerType, System::Object ^ sender, EventArgs ^ e);
public bool ReceiveWeakEvent (Type managerType, object sender, EventArgs e);
abstract member ReceiveWeakEvent : Type * obj * EventArgs -> bool
Public Function ReceiveWeakEvent (managerType As Type, sender As Object, e As EventArgs) As Boolean
Parametreler
- managerType
- Type
Bu yöntemi çağıran WeakEventManager türü.
- sender
- Object
Olayı oluşturan nesne.
Olay verileri.
Döndürülenler
true
dinleyici olayı işlediyse. Dinleyicinin WeakEventManager işlemediği bir olay için dinleyiciyi kaydetmek için WPF'deki işleme tarafından bir hata olarak kabul edilir. Ne olursa olsun, yöntemi tanımadığı veya işlemediği bir olay alırsa döndürmelidir false
.
Örnekler
Aşağıdaki örnek, iki varsayımsal olay ClockwiseSpin
için WeakEvent desen desteği sağlamak ve CounterclockwiseSpin
her birinin ayrılmış WeakEventManager (gösterilmez) olması için uygulanırReceiveWeakEvent. Bu uygulama, desteklenen her olay için sınıf işleyicisi saptamalarını çağırır ve olay verilerini yayınlar (bu durumda iki olay bir olay veri türünü SpinEventArgs
paylaşır). Alınan olay beklenen bir olay değilse uygulama döndürülüyor false
.
bool IWeakEventListener.ReceiveWeakEvent(Type managerType, object sender, EventArgs e)
{
if (managerType == typeof(ClockwiseSpinEventManager))
{
OnClockwiseSpin(sender, (SpinEventArgs)e);
}
else if (managerType == typeof(CounterclockwiseSpinEventManager))
{
OnCounterclockwiseSpin(sender, (SpinEventArgs)e);
}
else
{
return false; // unrecognized event
}
return true;
}
private void OnClockwiseSpin(object sender, SpinEventArgs e) {
//do something here...
}
private void OnCounterclockwiseSpin(object sender, SpinEventArgs e) {
//do something here...
}
Private Function ReceiveWeakEvent(ByVal managerType As Type, ByVal sender As Object, ByVal e As EventArgs) As Boolean Implements IWeakEventListener.ReceiveWeakEvent
If managerType Is GetType(ClockwiseSpinEventManager) Then
OnClockwiseSpin(sender, CType(e, SpinEventArgs))
ElseIf managerType Is GetType(CounterclockwiseSpinEventManager) Then
OnCounterclockwiseSpin(sender, CType(e, SpinEventArgs))
Else
Return False ' unrecognized event
End If
Return True
End Function
Private Sub OnClockwiseSpin(ByVal sender As Object, ByVal e As SpinEventArgs)
'do something here...
End Sub
Private Sub OnCounterclockwiseSpin(ByVal sender As Object, ByVal e As SpinEventArgs)
'do something here...
End Sub
Uygulayanlara Notlar
Bu yöntem, alıcının dinleyici listesinde olduğu tüm olası olayları almak için tasarlanmıştır. Özellikle birden fazla olayı dinleyen bir sınıf için uygulanıyorsa, çağrının hangi olaya karşılık geldiğini öğrenmek için gelen managerType
parametrenin türünü denetlemeniz gerekir. Bu nedenle, desenin parçası olacak her olayın ayrılmış WeakEventManagerbir olması gerekir. Ayrıca parametresi e
genel EventArgsolarak yazıldı. Bu nedenle, olay verilerinden belirli özellikleri almak için uygulamanızın belirli olay veri türüne ataması gerekir.
Genellikle, türüne göre WeakEventManager olayın kimliğini denetledikten sonra uygulamanız bir özel sınıf işleyicisi çağırmalıdır. Sınıf işleyiciniz, gönderendeki olaya aracılığıyla eklemenin +=
geleneksel olay deseni aracılığıyla eklenen dinleyiciler için bu olayı işlemek için kullanılan çok aynı sınıf işleyicisi olabilir. Aşağıdaki örnek bölümde kaba bir uygulama şablonu verilmiştir.