Visual Basic ve WPF Olay İşleme
Özellikle Microsoft Visual Basic .NET dili için, özniteliklerle olay işleyicileri eklemek veya yöntemini kullanmak yerine olay işleyicilerini örneklerle ilişkilendirmek için dile özgü Handles
anahtar sözcüğünü AddHandler kullanabilirsiniz. Ancak, Handles
söz dizimi WPF olay sisteminin belirli yönlendirilmiş olay özelliklerinden bazılarını destekleyebileceğinden, Handles
örneklere işleyici ekleme tekniğinin bazı sınırlamaları vardır.
WPF Uygulamasında "Tanıtıcıları" Kullanma
ile Handles
örneklere ve olaylara bağlı olay işleyicilerinin tümü, örneğin kısmi sınıf bildirimi içinde tanımlanmalıdır. Bu, öğelerdeki öznitelik değerleri aracılığıyla atanan olay işleyicileri için de bir gereksinimdir. Sayfada yalnızca özellik değerine (veya x:Name Yönergesi bildirildi) sahip bir Name öğe için belirtebilirsinizHandles
. Bunun nedeniName, XAML'de söz diziminin gerektirdiği Instance.Event başvuru biçimini desteklemek için gereken örnek başvuruyu oluşturmasıdırHandles
. Başvuru olmadan Name için Handles
kullanılabilecek tek öğe, kısmi sınıfı tanımlayan kök öğe örneğidir.
Aynı işleyiciyi birden çok öğeye atamak için Instance.Event başvurularını Handles
virgülle ayırabilirsiniz.
Aynı Instance.Eventbaşvurusuna birden fazla işleyici atamak için kullanabilirsinizHandles
. İşleyicilerin başvuruda verileceği sıraya herhangi bir önem atayın Handles
; aynı olayı işleyen işleyicilerin herhangi bir sırada çağrılabileceğini varsaymalısınız.
bildirimine ile Handles
eklenen bir işleyiciyi kaldırmak için öğesini çağırabilirsiniz RemoveHandler.
Kendi üye tablolarında işlenen olayı tanımlayan örneklere işleyiciler eklediğiniz sürece, yönlendirilen olaylar için işleyiciler eklemek için kullanabilirsiniz Handles
. Yönlendirilmiş olaylar için, ile Handles
eklenen işleyiciler, XAML öznitelikleri olarak eklenen veya ortak imzası AddHandlerolan işleyicilerle aynı yönlendirme kurallarını izler. Başka bir deyişle, olay zaten işlendi olarak işaretlenmişse ( Handled olay verilerindeki özellik şöyledir True
), ile Handles
eklenen işleyiciler bu olay örneğine yanıt olarak çağrılmıyor demektir. Olay, yoldaki başka bir öğedeki örnek işleyicileri tarafından veya geçerli öğede veya yol üzerindeki önceki öğelerde sınıf işleme tarafından işlenebilir. Eşleştirilmiş tünel/kabarcık olaylarını destekleyen giriş olayları için tünel yolu olay çiftinin işlendiğini işaretlemiş olabilir. Yönlendirilen olaylar hakkında daha fazla bilgi için bkz . Yönlendirilmiş Olaylara Genel Bakış.
İşleyici Eklemeye yönelik "Tanıtıcılar" sınırlamaları
Handles
ekli olaylar için işleyicilere başvuramaz. Ekli olay için erişimci yöntemini veya XAML'de typename.eventname olay özniteliklerini kullanmanız add
gerekir. Ayrıntılar için bkz . Yönlendirilmiş Olaylara Genel Bakış.
Yönlendirilen olaylar için, yalnızca bu olayın örnek üyeleri tablosunda bulunduğu örneklere işleyici atamak için kullanabilirsiniz Handles
. Ancak, genel olarak yönlendirilmiş olaylarla, üst öğe üye tablosunda bu olaya sahip olmasa bile alt öğelerden gelen bir olay için dinleyici olabilir. Öznitelik söz diziminde bunu, işlemek istediğiniz olayı tanımlayan türü niteleyen bir typename.membername öznitelik formu aracılığıyla belirtebilirsiniz. Örneğin, üst Page
öğe (tanımlı olay olmadan Click
) biçiminde Button.Click
bir öznitelik işleyicisi atayarak düğme tıklama olaylarını dinleyebilir. AncakHandles
, çakışan bir Instance.Event formunu desteklemesi gerektiğinden typename.membername formunu desteklemez. Ayrıntılar için bkz . Yönlendirilmiş Olaylara Genel Bakış.
Handles
işlenmiş olarak işaretlenmiş olaylar için çağrılan işleyicileri ekleyemez. Bunun yerine, kodu kullanmanız ve aşırı yüklemesini handledEventsToo
AddHandler(RoutedEvent, Delegate, Boolean)çağırmanız gerekir.
Dekont
XAML'de aynı olay için bir olay işleyicisi belirtirken Visual Basic kodunda söz dizimini kullanmayın Handles
. Bu durumda, olay işleyicisi iki kez çağrılır.
WPF "Tanıtıcılar" İşlevselliğini Nasıl Uygular?
Genişletilebilir Uygulama Biçimlendirme Dili (XAML) sayfası derlendiğinde, ara dosya özellik kümesi (veya x:Name Yönergesi bildirilmiştir) olan Name sayfadaki her öğeye başvurular bildirirFriend
WithEvents
. Adlandırılmış her örnek, aracılığıyla Handles
bir işleyiciye atanabilecek bir öğe olabilir.
Dekont
Visual Studio'da IntelliSense, sayfada başvuru için Handles
hangi öğelerin kullanılabilir olduğunu size gösterebilir. Ancak, ara dosyanın tüm Friends
başvuruları doldurabilmesi için bir derleme geçişi gerekebilir.
Ayrıca bkz.
.NET Desktop feedback
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin