XamlWriter.Save'in Serileştirme Sınırlamaları
API, bir Windows Presentation Foundation (WPF) uygulamasının içeriğini bir Extensible Application Markup Language Save (XAML) dosyası olarak serileştirmek için kullanılabilir. Ancak, tam olarak serileştirilmiş olanda bazı önemli sınırlamalar vardır. Bu sınırlamalar ve bazı genel konular bu konuda belgelenmiştir.
Çalışma Zamanı, Design-Time Gösterimi
çağrısıyla seri hale getirilecek temel anlayışı, sonucun çalışma zamanında seri hale getirilecek nesnenin Save bir gösterimi olmasıdır. Özgün XAML dosyasının birçok tasarım zamanı özelliği, XAML bellek içinde nesneler olarak yüklendiğinde iyileştirilmiş veya kaybolabilir ve seri hale getirme çağrısında Save korunmaz. Serileştirilmiş sonuç, uygulamanın oluşturulmuş mantıksal ağacının etkili bir gösterimidir, ancak bunu üreten özgün XAML'nin olması gerekmez. Bu sorunlar, serileştirmenin kapsamlı bir Save XAML tasarım yüzeyinin parçası olarak kullanımını son derece zor hale getiri.
Serileştirme Self-Contained
serileştirilmiş çıktısı kendi içindedir; seri hale getirilecek her şey tek bir kök öğe ile bir XAML tek sayfasının içinde yer almaktadır ve ÜR'ler dışında dış Save başvurular yoktur. Örneğin, sayfanız uygulama kaynaklarından kaynaklara başvurursa, bunlar seri hale getirilecek sayfanın bir bileşeni gibi görünür.
Uzantı Başvuruları Başvurulara Başvuruldu
veya gibi çeşitli işaretleme uzantısı biçimleri tarafından yapılan nesnelere yönelik yaygın başvurular, serileştirme StaticResourceBinding işlemi tarafından kaldırılabilir. Bunlar, bellek içinde nesneler uygulama çalışma zamanı tarafından oluşturulurken zaten kaldırılmıştı ve mantık bu tür başvuruları serileştirilmiş çıkışa geri yüklemek için özgün Save XAML'yi yeniden ziyaret ediyor değil. Bu, veriye bağlı veya elde edilen herhangi bir değeri çalışma zamanı gösterimi tarafından son kullanılan değer olacak şekilde dondurabilir ve bu değeri yerel olarak ayarlanmış diğer herhangi bir değerden ayırt etmek için yalnızca sınırlı veya dolaylı bir beceriye sahip olur. Görüntüler ayrıca özgün kaynak başvuruları yerine projede mevcut olan görüntülere nesne başvuruları olarak seri hale getirilse de, başlangıçta başvurulan dosya adı veya URI'yi kaybeder. Aynı sayfada bildirilen kaynaklar bile, kaynak koleksiyonunun anahtarı olarak korunmak yerine başvurulacakları noktaya serileştirilmiş olarak görülür.
Olay İşleme Korunmadı
XAML aracılığıyla eklenen olay işleyicileri seri hale getirilsin, bunlar korunmaz. Arka kod olmadan XAML'nin (ve ilgili x:Code mekanizması olmadan) çalışma zamanı yordamsal mantığını seri hale getirmenin bir yolu yoktur. Serileştirme kendi içinde olduğundan ve mantıksal ağaçla sınırlı olduğundan, olay işleyicilerini depolamak için bir tesis yoktur. Sonuç olarak, hem özniteliğin kendisi hem de işleyiciyi adlandıran dize değeri olay işleyicisi öznitelikleri çıkış XAML'den kaldırılır.
XAMLWriter.Save Kullanımı için Gerçekçi Senaryolar
Burada listelenen sınırlamalar oldukça fazladır ancak yine de serileştirme için kullanmaya uygun birkaç Save senaryo vardır.
Vektör veya grafik çıktı: İşlenen alan çıktısı, yeniden yüklendiğinde aynı vektör veya grafikleri yeniden oluşturmak için kullanılabilir.
Zengin metin ve akış belgeleri: Metin ve içindeki tüm öğe biçimlendirme ve öğe içermesi çıkışta korunur. Bu, yaklaşık bir pano işlevine sahip mekanizmalar için yararlı olabilir.
İş nesnesi verilerini koruma: XML verileri gibi özel öğelerde depolanmış verileriniz varsa, iş nesneleriniz özel oluşturucular sağlama ve başvuru özelliği değerleri için dönüştürme gibi temel XAML kurallarına uygun olduğu sürece, bu iş nesneleri serileştirme aracılığıyla devam eder.