WPF'den System.Xaml'a geçirilmiş türler

.NET Framework 3.5 ve .NET Framework 3.0'da hem Windows Presentation Foundation (WPF) hem de Windows Workflow Foundation bir XAML dil uygulaması içeriyordu. WPF XAML uygulaması için genişletilebilirlik sağlayan genel türlerin çoğu WindowsBase, PresentationCore ve PresentationFramework derlemelerinde mevcutdu. Benzer şekilde, Windows Workflow Foundation XAML için genişletilebilirlik sağlayan genel türler System.Workflow.ComponentModel derlemesinde mevcutdu. .NET Framework 4'te, XAML ile ilgili türlerden bazıları System.Xaml derlemesine geçirildi. XAML dil hizmetlerinin yaygın bir .NET Framework uygulaması, başlangıçta belirli bir çerçevenin XAML uygulaması tarafından tanımlanan ancak genel .NET Framework 4 XAML dil desteğinin bir parçası olan birçok XAML genişletilebilirlik senaryosuna olanak tanır. Bu makalede geçirilen türler listelenir ve geçişle ilgili sorunlar ele alınmaktadır.

Derlemeler ve Ad Alanları

.NET Framework 3.5 ve .NET Framework 3.0'da WPF'nin XAML'i desteklemek için uyguladığı türler genellikle ad alanındaydı System.Windows.Markup . Bu türlerin çoğu WindowsBase derlemesindeydi.

.NET Framework 4'te yeni bir ad alanı ve yeni System.Xaml bir System.Xaml derlemesi vardır. BAŞLANGıÇTA WPF XAML için uygulanan türlerin çoğu artık XAML'nin herhangi bir uygulaması için genişletilebilirlik noktaları veya hizmetler olarak sağlanıyor. Daha genel senaryolar için kullanılabilir hale getirmenin bir parçası olarak, türler özgün WPF derlemesinden System.Xaml derlemesine tür iletilir. Bu, diğer çerçevelerin derlemelerini (WPF ve Windows Workflow Foundation gibi) dahil etmek zorunda kalmadan XAML genişletilebilirlik senaryolarını etkinleştirir.

Geçirilen türler için türlerin çoğu ad alanında System.Windows.Markup kalır. Bu kısmen dosya başına mevcut uygulamalarda CLR ad alanı eşlemelerinin bozulmasından kaçınmak içindi. Sonuç olarak, .NET Framework 4'teki ad alanı genel System.Windows.Markup XAML dil destek türlerinin (System.Xaml derlemesinden) ve WPF XAML uygulamasına (WindowsBase ve diğer WPF derlemelerinden) özgü türlerin bir karışımını içerir. System.Xaml'e geçirilen ancak daha önce bir WPF derlemesinde bulunan herhangi bir tür, WPF derlemesinin 4. sürümünde tür iletme desteğine sahiptir.

İş Akışı XAML Destek Türleri

Windows Workflow Foundation ayrıca XAML destek türleri de sağladı ve çoğu durumda bunların bir WPF eşdeğeri ile özdeş kısa adları vardı. Windows Workflow Foundation XAML destek türlerinin listesi aşağıdadır:

Bu destek türleri .NET Framework 4 için Windows Workflow Foundation derlemelerinde hala mevcuttur ve belirli Windows Workflow Foundation uygulamaları için kullanılabilir; ancak bunlara Windows Workflow Foundation kullanmayan uygulamalar veya çerçeveler tarafından başvurulmamalıdır.

MarkupExtension

.NET Framework 3.5 ve .NET Framework 3.0'da WPF MarkupExtension sınıfı WindowsBase derlemesindeydi. System.Workflow.ComponentModel derlemesinde Windows Workflow Foundation MarkupExtensioniçin paralel bir sınıf vardı. .NET Framework 4'te sınıfı MarkupExtension System.Xaml derlemesine geçirilir. .NET Framework 4'te, MarkupExtension yalnızca belirli çerçeveler üzerinde derleme yapanlar için değil, .NET XAML Hizmetlerini kullanan tüm XAML genişletilebilirlik senaryolarına yöneliktir. Mümkün olduğunda, çerçevedeki belirli çerçeveler veya kullanıcı kodu da XAML uzantısı için sınıfında derlenmelidir MarkupExtension .

MarkupExtension Destekleyici Hizmet Sınıfları

WPF için .NET Framework 3.5 ve .NET Framework 3.0, XAML'de tür/özellik kullanımını desteklemek üzere MarkupExtension uygulayıcıların ve TypeConverter uygulamaların kullanımına sunulan çeşitli hizmetler sağladı. Bu hizmetler şunlardır:

Dekont

.NET Framework 3.5'ten gelen ve işaretleme uzantılarıyla ilgili başka bir hizmet de arabirimdir IReceiveMarkupExtension . IReceiveMarkupExtension geçirilmedi ve .NET Framework 4 için işaretlendi [Obsolete] . Daha önce kullanılan IReceiveMarkupExtension senaryolar bunun yerine öznitelikli geri çağırmaları kullanmalıdır XamlSetMarkupExtensionAttribute . AcceptedMarkupExtensionExpressionTypeAttribute da olarak işaretlenir [Obsolete].

XAML Dil Özellikleri

WPF için çeşitli XAML dil özellikleri ve bileşenleri daha önce PresentationFramework derlemesinde mevcutdu. Bunlar, XAML işaretlemesinde işaretleme uzantısı kullanımlarını kullanıma sunma amacıyla bir MarkupExtension alt sınıf olarak uygulandı. .NET Framework 4'te bunlar System.Xaml derlemesinde bulunur, böylece WPF derlemeleri içermeyen projeler bu XAML dil düzeyi özelliklerini kullanabilir. WPF, .NET Framework 4 uygulamaları için aynı uygulamaları kullanır. Bu konuda listelenen diğer durumlarda olduğu gibi, önceki başvuruların bozulmasını önlemek için destekleyici türler ad alanında System.Windows.Markup varolmaya devam eder.

Aşağıdaki tablo, System.Xaml'de tanımlanan XAML özellik desteği sınıflarının listesini içerir.

XAML Dil Özelliği Kullanım
ArrayExtension <x:Array ...>
NullExtension {x:Null}
StaticExtension {x:Static ...}
TypeExtension {x:Type ...}

System.Xaml'in belirli destek sınıfları olmasa da, XAML dili için dil özelliklerini işlemeye yönelik genel mantık artık System.Xaml'de ve uygulanan XAML okuyucularında ve XAML yazıcılarında yer alır. Örneğin, x:TypeArguments System.Xaml uygulamalarından XAML okuyucuları ve XAML yazıcıları tarafından işlenen bir özniteliktir; XAML düğümü akışında not edilebilir, varsayılan (CLR tabanlı) XAML şema bağlamında işlemeye sahiptir, XAML tür sistemi gösterimine sahiptir vb. XAML başvuru belgeleri hakkında daha fazla bilgi için bkz . XAML Hizmetleri.

ValueSerializer ve Destekleyici Sınıflar

sınıfı ValueSerializer , özellikle serileştirmenin çıktıda birden çok mod veya düğüm gerektirebileceği XAML serileştirme durumları için bir dizeye tür dönüştürmeyi destekler. .NET Framework 3.5 ve .NET Framework 3.0'da WPF ValueSerializer için WindowsBase derlemesindeydi. .NET Framework 4'te ValueSerializer sınıfı System.Xaml'dedir ve yalnızca WPF üzerinde derlenenler için değil, herhangi bir XAML genişletilebilirlik senaryosuna yöneliktir. IValueSerializerContext (destekleyici bir hizmet) ve DateTimeValueSerializer (belirli bir alt sınıf) da System.Xaml'e geçirilir.

WPF XAML, XAML davranışları hakkında bir şey belirtmek için CLR türlerine uygulanabilen çeşitli öznitelikler içeriyordu. Aşağıda, .NET Framework 3.5 ve .NET Framework 3.0'daki WPF derlemelerinde bulunan özniteliklerin listesi yer alır. Bu öznitelikler .NET Framework 4'te System.Xaml'e geçirilir.

Çeşitli Sınıflar

Arabirim.NET IComponentConnector Framework 3.5 ve .NET Framework 3.0'da WindowsBase'de var, ancak .NET Framework 4'teki System.Xaml'de var. IComponentConnector öncelikli olarak araç desteği ve XAML işaretleme derleyicileri için tasarlanmıştır.

Arabirim.NET INameScope Framework 3.5 ve .NET Framework 3.0'da WindowsBase'de var, ancak .NET Framework 4'teki System.Xaml'de var. INameScope bir XAML ad kapsamı için temel işlemleri tanımlar.

Aşağıdaki sınıflar hem WPF derlemelerinde hem de .NET Framework 4'teki System.Xaml derlemesinde bulunur:

XamlReader

XamlWriter

XamlParseException

WPF uygulaması ad alanında ve PresentationFramework derlemesinde System.Windows.Markup bulunur. System.Xaml uygulaması ad alanında System.Xaml bulunur. WPF türleri kullanıyorsanız veya WPF türlerinden türetiliyorsanız, genellikle System.Xaml uygulamaları XamlReader yerine ve XamlWriter wpf uygulamalarını kullanmanız gerekir. Daha fazla bilgi için bkz. ve System.Windows.Markup.XamlWriteriçindeki System.Windows.Markup.XamlReader açıklamalar.

Hem WPF derlemelerine hem de System.Xaml'e başvurular dahil ediyorsanız ve hem hem System.Xaml de System.Windows.Markup ad alanları için deyimler kullanıyorsanızinclude, türleri belirsizlik olmadan çözümlemek için bu API'lere yapılan çağrıları tam olarak nitelemeniz gerekebilir.