WPF 'den System. xaml 'e geçirilen türler

.NET Framework 3,5 ve .NET Framework 3,0 ' de, hem Windows Presentation Foundation (WPF) hem de Windows Workflow Foundation bir XAML dil uygulamasını içeriyordu. WPF XAML uygulaması için genişletilebilirlik sağlayan genel türlerin birçoğu WindowsBase, PresentationCore ve PresentationFramework derlemelerinde vardı. benzer şekilde, Windows Workflow Foundation XAML için genişletilebilirlik sağlayan genel türler System. Workflow. ComponentModel derlemesinde vardı. .NET Framework 4 ' te, XAML ile ilgili bazı türlerden bazıları System. XAML derlemesine geçirildi. xaml dil hizmetlerinin yaygın bir .NET Framework uygulanması, ilk olarak belirli bir Framework 'ün xaml uygulamasına göre tanımlanan ancak artık genel .NET Framework 4 XAML dil desteğinin bir parçası olan çok sayıda XAML genişletilebilirlik senaryosunu mümkün bir şekilde sunar. Bu makalede geçirilmiş 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 ' de, WPF 'nin XAML 'yi desteklemek için uyguladığı türler genellikle System.Windows.Markup ad alanında yer alan. Bu türlerin çoğu WindowsBase derlemesinde vardı.

.NET Framework 4 ' te, yeni bir System.Xaml ad alanı ve yeni bir System. Xaml derlemesi vardır. WPF XAML için başlangıçta uygulanan türlerin çoğu, artık XAML uygulamaları için genişletilebilirlik noktaları veya hizmetleri olarak sunulmaktadır. Bunların daha genel senaryolar için kullanılabilir hale getirilmesi kapsamında türler, orijinal WPF derlemelerinden System. xaml derlemesine iletilir. bu, diğer çerçevelerin derlemelerini (WPF ve Windows Workflow Foundation) dahil etmek zorunda kalmadan XAML genişletilebilirlik senaryolarına olanak sağlar.

Geçirilen türler için, türlerin çoğu System.Windows.Markup ad alanında kalır. Bu, bir dosya temelinde mevcut uygulamalarda CLR ad alanı eşlemelerini bozmamak için kısmen oldu. sonuç olarak, System.Windows.Markup .NET Framework 4 ' teki ad alanı, genel XAML dil destek türlerinin (System. XAML derlemesinden) ve wpf XAML uygulamasına özgü türlerin (windowsbase ve diğer WPF derlemelerinden) bir karışımını içerir. System. xaml 'e geçirilmiş ancak daha önce bir WPF derlemesinde bulunan herhangi bir tür, WPF derlemesinin sürüm 4 ' te tür iletme desteğine sahiptir.

Workflow XAML destek türleri

Windows Workflow Foundation ayrıca XAML destek türleri de sağlamıştır ve birçok durumda, benzer kısa adlara sahip bir WPF eşdeğeri vardır. Windows Workflow Foundation XAML destek türlerinin bir listesi aşağıda verilmiştir:

bu destek türleri, .NET Framework 4 için Windows Workflow Foundation derlemelerinden hala bulunur ve belirli Windows Workflow Foundation uygulamaları için hala 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 ' de, MarkupExtension WPF sınıfı windowsbase derlemeiydi. MarkupExtensionSystem. Workflow. ComponentModel derlemesinde vardı Windows Workflow Foundation için paralel bir sınıf. .NET Framework 4 ' te, MarkupExtension sınıfı System. Xaml derlemesine geçirilir. .NET Framework 4 ' te, MarkupExtension yalnızca belirli çerçeveler üzerinde derleme için değil, .net xaml hizmetleri kullanan xaml genişletilebilirlik senaryosuna yöneliktir. Mümkün olduğunda, çerçevede belirli çerçeveler veya Kullanıcı kodu MarkupExtension xaml uzantısı için sınıf üzerinde de derleme sağlamalıdır.

Hizmet sınıflarını destekleyen MarkupExtension

WPF için .NET Framework 3,5 ve .NET Framework 3,0, MarkupExtensionTypeConverter XAML 'de tür/özellik kullanımını desteklemek üzere uygulayıcıları ve uygulamalar tarafından kullanılabilen çeşitli hizmetler sağladı. Bu hizmetler şunlardır:

Not

biçimlendirme uzantılarıyla ilgili olan .NET Framework 3,5 ' den başka bir hizmet IReceiveMarkupExtension arabirimidir. IReceiveMarkupExtensiontaşınmadı ve [Obsolete] .NET Framework 4 için işaretlendi. Daha önce kullanılan senaryolar IReceiveMarkupExtension bunun yerine XamlSetMarkupExtensionAttribute öznitelikli geri çağırmaları kullanmalıdır. AcceptedMarkupExtensionExpressionTypeAttribute de işaretlenir [Obsolete] .

XAML dil özellikleri

Daha önce PresentationFramework derlemesinde bulunan WPF için birkaç XAML dil özelliği ve bileşeni var. Bunlar MarkupExtension xaml biçimlendirmesinde biçimlendirme uzantısı kullanımlarını göstermek için bir alt sınıf olarak uygulandı. .NET Framework 4 ' te, WPF derlemeleri içermeyen projelerin bu xaml dil düzeyi özelliklerini kullanabilmesi için System. Xaml derlemesinde bulunur. WPF, .NET Framework 4 uygulamaları için aynı uygulamaları kullanır. Bu konuda listelenen diğer durumlarda olduğu gibi, System.Windows.Markup önceki başvuruların kesilmesini önlemek için destekleyici türler ad alanında mevcut olmaya devam eder.

Aşağıdaki tablo, System. xaml içinde tanımlanan XAML özellik desteği sınıflarının bir listesini içerir.

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

System. xaml belirli destek sınıflarına sahip olmayabilir, ancak XAML dilinin dil özelliklerini işlemek için genel mantık artık System. xaml ve uygulanan XAML okuyucuları ve XAML yazarları içinde bulunur. Örneğin, x:TypeArguments System. xaml UYGULAMALARıNDAN xaml okuyucuları ve XAML yazarları tarafından işlenen bir özniteliktir; xaml düğüm akışında belirtilebilirler, varsayılan (clr tabanlı) xaml şeması bağlamında işleme sahiptir, XAML tür sistemi gösterimine sahiptir ve bu şekilde devam eder. XAML için başvuru belgeleri hakkında daha fazla bilgi için bkz. xaml Hizmetleri.

ValueSerializer ve destekleme sınıfları

ValueSerializerSınıfı, özellikle serileştirme 'in çı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 ' de, ValueSerializer WPF için windowsbase derlemesi vardı. .NET Framework 4 ' te, ValueSerializer sınıfı System. Xaml içinde bulunur ve yalnızca WPF üzerinde derleme için değil xaml genişletilebilirlik senaryosuna yöneliktir. IValueSerializerContext (bir destekleme hizmeti) ve DateTimeValueSerializer (belirli bir alt sınıf) System. xaml 'e de geçirilir.

WPF XAML, XAML davranışları hakkında bir şeyi göstermek üzere CLR türlerine uygulanabilecek birkaç özniteliği içeriyordu. aşağıda .NET Framework 3,5 ve .NET Framework 3,0 ' deki WPF derlemelerindeki özniteliklerin bir listesi verilmiştir. bu öznitelikler .NET Framework 4 ' te System. Xaml 'e geçirilir.

Çeşitli sınıflar

IComponentConnectorarabirim, .NET Framework 3,5 ve .NET Framework 3,0 ' de windowsbase 'de vardı, ancak .NET Framework 4 ' te System. Xaml içinde var. IComponentConnector Öncelikle araç desteği ve XAML biçimlendirme derleyicileri için tasarlanmıştır.

INameScopearabirim, .NET Framework 3,5 ve .NET Framework 3,0 ' de windowsbase 'de vardı, ancak .NET Framework 4 ' te System. Xaml içinde var. INameScope XAML namescope için temel işlemleri tanımlar.

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

XamlReader

XamlWriter

XamlParseException

WPF uygulama, System.Windows.Markup ad alanında ve PresentationFramework derlemesinde bulunur. System. xaml uygulama System.Xaml ad alanında bulunur. WPF türlerini kullanıyorsanız veya WPF türlerinden türetiliyorsanız, XamlReaderXamlWriter System. xaml uygulamaları yerine genellikle ve ' nin WPF uygulamalarını kullanmanız gerekir. Daha fazla bilgi için ve içindeki açıklamalar bölümüne bakın System.Windows.Markup.XamlReaderSystem.Windows.Markup.XamlWriter .

Hem WPF derlemelerine hem de System. xaml 'e başvurular dahil ediyorsanız ve hem hem de include ad alanları için deyimler kullanıyorsanız System.Windows.MarkupSystem.Xaml , bu API 'lerin çağrılarını belirsizlik olmadan çözümlemek için tam olarak nitelemeniz gerekebilir.