Visual Basic ve WPF Olay İşleme
özel olarak Microsoft Visual Basic .net dili için, özniteliklerle olay işleyicileri Handles eklemek veya yöntemi kullanmak yerine, olay işleyicilerini örneklerle ilişkilendirmek için dile özgü anahtar sözcüğünü kullanabilirsiniz AddHandler . Ancak, Handles işleyicileri örneklere ekleme tekniği bazı sınırlamalara sahiptir, çünkü Handles söz dizimi olay sisteminin bazı belirli yönlendirilmiş olay özelliklerini desteklenemez WPF .
WPF uygulamasında "Handles" kullanma
Örneklerine ve olaylarına bağlı olan olay işleyicileri, Handles Örneğin, öğeleri üzerinde öznitelik değerleri aracılığıyla atanan olay işleyicileri için de bir gereksinim olan örnek sınıfının kısmi sınıf bildiriminde tanımlanmalıdır. Yalnızca Handles bir Name özellik değerine (veya x:Name yönergesinin bildirildiği) sahip sayfada bir öğe için belirtebilirsiniz. Bunun nedeni, Name ' ın, XAML sözdizimi Için gereken örneği. Event başvuru biçimini desteklemek için gereken örnek başvurusunu oluşturmasıdır Handles . Başvuru olmadan için kullanılabilecek tek öğe, Handles Name kısmi sınıfı tanımlayan kök öğe örneğidir.
Aynı işleyiciyi birden çok öğeye atayabilir ve sonra örnek. olay başvurularını virgülle ayırarak atayabilirsiniz Handles .
HandlesAynı örneğe birden fazla işleyici atamak için ' i kullanabilirsiniz . olay başvurusu. Başvuru içinde işleyicilerin verildiği sıraya herhangi bir önem atamayın Handles ; aynı olayı işleyen işleyicilerin herhangi bir sırada çağrılabileceğini varsaymalısınız.
Bildiriminde ile eklenmiş bir işleyiciyi kaldırmak için Handles öğesini çağırabilirsiniz RemoveHandler .
HandlesÖğeleri, Üyeler tablolarında işlenmekte olan olayı tanımlayan örneklere eklediğiniz sürece, yönlendirilmiş olaylara yönelik işleyiciler eklemek için ' yi kullanabilirsiniz. Yönlendirilmiş olaylar için, ile birlikte eklenmiş olan işleyiciler, Handles öznitelik olarak eklenmiş XAML veya ortak imzasıyla aynı yönlendirme kurallarını izler AddHandler . Bu, olay zaten işlenmiş olarak işaretlenmişse ( Handled olay verilerinde özelliği ise True ), bu Handles olay örneğine karşılık ile eklenen işleyiciler çağrılmaz. Olay, rotadaki başka bir öğe üzerinde örnek işleyicileri tarafından veya geçerli öğe ya da yol üzerindeki önceki öğeler üzerinde sınıf işlemesi tarafından işlenmiş olarak işaretlenebilir. Eşleştirilmiş tünel/kabarcık olaylarını destekleyen giriş olayları için, tünel rotası işlenen olay çiftini işaretlenmiş olabilir. Yönlendirilmiş olaylar hakkında daha fazla bilgi için bkz. yönlendirilmiş olaylara genel bakış.
Işleyiciler eklemek için "Handles" sınırlamaları
Handles Ekli olaylar için işleyicilere başvuru yapılamaz. addBu ekli olay veya ' de typeName. eventName olay öznitelikleri için erişimci yöntemini kullanmanız gerekir XAML . Ayrıntılar için bkz. yönlendirilmiş olaylara genel bakış.
Yönlendirilmiş olaylar için yalnızca, Handles örnek üyeler tablosunda bu olayın varolduğu örnekleri için işleyiciler atamak üzere kullanabilirsiniz. Bununla birlikte, genel olarak, bir üst öğe, alt öğelerinden bir olay için bir dinleyici olabilir ve üst öğe, üyeler tablosunda bu olaya sahip olmasa bile. Öznitelik sözdiziminde, bunu, işlemek istediğiniz olayın gerçekten tanımladığı türü niteleyen bir typeName. MemberName öznitelik formu aracılığıyla belirtebilirsiniz. Örneğin, bir üst öğe Page (hiçbir Click olay tanımlanmadığında), formda bir öznitelik işleyicisi atayarak düğme tıklamalı olaylar için dinleme yapabilir Button.Click . Ancak Handles , çakışan bir örnek. Event formunu desteklemesi gerektiğinden typeName. MemberName formunu desteklemez. Ayrıntılar için bkz. yönlendirilmiş olaylara genel bakış.
Handles zaten işlenmiş olarak işaretlenmiş olaylar için çağrılan işleyiciler iliştirilemez. Bunun yerine, kodu kullanmanız ve ' handledEventsToo nin aşırı yüklemesini çağırmanız gerekir AddHandler(RoutedEvent, Delegate, Boolean) .
Not
HandlesXAML 'de aynı olay için bir olay işleyicisi belirttiğinizde Visual Basic kodunuzda söz dizimini kullanmayın. Bu durumda, olay işleyicisi iki kez çağırılır.
WPF "Handles" Işlevselliğini nasıl uygular
Bir Extensible Application Markup Language (XAML) sayfa derlendiğinde, ara dosya Friend WithEvents sayfadaki bir Name özellik kümesi (veya x:Name yönergesinin bildirildiği) bulunan her öğeye başvuruları bildirir. Her bir adlandırılmış örnek potansiyel olarak bir işleyiciye atanabileceği bir öğedir Handles .
Not
Visual Studio içinde ıntellisense, sayfada bir başvuru için kullanılabilen öğelerin tamamlanmasını gösterebilir Handles . Ancak, bu, ara dosyanın tüm başvuruları doldurabilmesi için bir derleme geçişi alabilir Friends .