Aracılığıyla paylaş


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.Clickbir ö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 handledEventsTooAddHandler(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 bildirirFriendWithEvents. Adlandırılmış her örnek, aracılığıyla Handlesbir 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.