Nesne Yaşam Süresi Olayları

Bu konuda, oluşturma, kullanma ve yok etme için bir nesne ömrü içindeki aşamaları belirten belirli WPF olayları açıklanmaktadır.

Önkoşullar

bu konu başlığı altında, bağımlılık özelliklerini Windows Presentation Foundation (WPF) sınıflarında var olan bir bağımlılık özellikleri tüketicisinin perspektifinden anladığınızı ve bağımlılık özelliklerine genel bakış konusunu okuduğunuzu varsaymış olursunuz. Bu konudaki örnekleri izlemek için Extensible Application Markup Language (XAML) de anlamalısınız ( WPF 'de xaml'e bakın) ve WPF uygulamalarını nasıl yazacağınız hakkında bilgi sahibi olmanız gerekir.

Nesne Yaşam Süresi Olayları

Microsoft .NET Framework yönetilen kodundaki tüm nesneler, yaşam, oluşturma, kullanma ve yok etme aşamasına benzer bir dizi aşamadan geçer. Birçok nesnenin Ayrıca, yok etme aşamasının bir parçası olarak oluşan sonlandırma aşaması vardır. WPF nesneleri, daha özel olarak WPF 'in öğe olarak tanımladığı görsel nesneler, ayrıca nesne ömrü yaygın bir aşamaları kümesi de vardır. WPF programlama ve uygulama modelleri bu aşamaları bir dizi olay olarak sunar. , Yaşam süresi olaylarına göre WPF 'de dört ana nesne türü vardır; Genel, pencere öğeleri, gezinti konakları ve uygulama nesneleri öğeleri. Windows ve gezinti konakları, visual objects 'in (öğeler) daha büyük gruplandırmasında de bulunur. Bu konu, tüm öğeler için ortak olan ömür olaylarını açıklar ve ardından uygulama tanımları, pencereler veya gezinti konakları için uygulanan daha belirgin olanları tanıtır.

Öğeler için ortak ömür olayları

Herhangi bir WPF framework düzeyi öğesi (ya da öğesinden türetilen nesneler FrameworkElementFrameworkContentElement ) üç ortak ömür olayına sahiptir: Initialized , Loaded ve Unloaded .

Başlatıldı

Initialized İlk olarak oluşturulur ve kabaca, oluşturucusunun çağrısıyla nesnenin başlatılmasına karşılık gelir. Olayı başlatmaya yanıt olarak yapıldığından, nesnenin tüm özelliklerinin ayarlandığı garanti edilir. (Özel durum, Dinamik kaynaklar veya bağlama gibi ifade kullanımlarıdır; bunlar değerlendirilmeyecek ifadeler olur.) Tüm özelliklerin ayarlandığı gereksinimin bir sonucu olarak, Initialized İşaretlemede tanımlanan iç içe geçmiş öğeler tarafından oluşturulan sırası, önce öğe ağacındaki en derin öğelerin, sonra da köke doğru olan üst öğeler sırasıyla ortaya çıkar. Bu sıra, üst-alt ilişkileri ve kapsamasının Özellik olmasından ve bu nedenle, özelliği dolduran alt öğeler de tamamen başlatıldığından üst öğe başlatmayı bildiremeyecek.

Etkinliğe yanıt olarak işleyiciler yazarken Initialized , işleyicinin eklendiği, özellikle de üst öğelerin bulunduğu öğe ağacındaki (mantıksal ağaç veya görsel ağaç) diğer tüm öğelerin bir garanti olmadığını göz önünde bulundurmanız gerekir. Üye değişkenleri null olabilir veya veri kaynakları henüz temeldeki bağlama tarafından doldurulmayabilir (ifade düzeyinde bile).

Yüklü

Loaded bir sonraki adımda oluşturulur. LoadedOlay, son işlemeden önce tetiklenir, ancak düzen sistemi, işleme için gerekli tüm değerleri hesapladıktan sonra. Loaded bir öğenin içinde yer aldığı mantıksal ağacın tamamlanmasını ve HWND ve işleme yüzeyini sağlayan bir sunum kaynağına bağlanmasını gerektirir. Standart veri bağlama (diğer özellikler veya doğrudan tanımlanmış veri kaynakları gibi yerel kaynaklara bağlama) öncesinde gerçekleşmeyecektir Loaded . Zaman uyumsuz veri bağlama (dış veya dinamik kaynaklar) oluşmuş olabilir, ancak zaman uyumsuz doğası tanımına göre oluşma garantisi garanti edilemez.

Olayın oluşturulduğu mekanizma, Loaded öğesinden farklı Initialized . InitializedOlay, tamamlanmış bir öğe ağacı tarafından doğrudan koordinasyon olmadan öğesi öğe tarafından tetiklenir. Buna karşılık olay, Loaded tüm öğe ağacının (özellikle de mantıksal ağaç) tamamında eşgüdümlü bir çaba olarak oluşturulur. Ağaçtaki tüm öğeler yüklendikleri bir durumda olduğunda, Loaded olay ilk olarak kök öğe üzerinde tetiklenir. LoadedDaha sonra olay her alt öğe üzerinde yoğun şekilde oluşturulur.

Not

Bu davranış, yönlendirilmiş bir olay için superficially benzer tünelleme gösterebilir. Ancak, olaydan olaya hiçbir bilgi taşınmaz. Her bir öğe her zaman olayını işleme fırsatına sahiptir Loaded ve olay verilerinin işlenmiş olarak işaretlenmesi o öğenin ötesinde hiçbir etkiye sahip değildir.

Kaldırıldı

Unloaded en son oluşturulur ve sunu kaynağı ya da kaldırılmakta olan görsel üst öğe tarafından başlatılır. Ne zaman Unloaded oluşturulur ve işlenirse, olay kaynağı üst öğesi olan (özellik tarafından belirlendiği gibi Parent ) veya mantıksal ya da görsel ağaçlarında yukarı eklenen herhangi bir öğe önceden kaldırılmış olabilir, yani veri bağlama, kaynak başvuruları ve stillerin normal veya son bilinen çalışma zamanı değerine ayarlanmayabilir.

Ömür olayları uygulama modeli öğeleri

Öğeleri için ortak ömür olayları oluşturmak aşağıdaki uygulama modeli öğeleridir: Application , Window ,, PageNavigationWindow ve Frame . Bunlar, ortak ömür olaylarını belirli amaçlarına uygun ek olaylarla genişletir. Bunlar aşağıdaki konumlarda ayrıntılı olarak ele alınmıştır:

Ayrıca bkz.