Biçimlendirme Uzantıları ve WPF XAMLMarkup Extensions and WPF XAML

Bu konu, kendi sözdizimi kurallarını, amacı ve bunları altını sınıfı nesne modeli de dahil olmak üzere XAML için biçimlendirme uzantıları kavramı tanıtır.This topic introduces the concept of markup extensions for XAML, including their syntax rules, purpose, and the class object model that underlies them. Biçimlendirme uzantıları bir XAML dili ve .NET uygulamasının XAML hizmetleri genel özelliğidir.Markup extensions are a general feature of the XAML language and of the .NET implementation of XAML services. Bu konuda özellikle kullanılmak üzere WPF XAML biçimlendirme uzantıları ayrıntıları.This topic specifically details markup extensions for use in WPF XAML.

XAML işlemci ve İşaretleme uzantılarıXAML Processors and Markup Extensions

Genel olarak bakıldığında, XAML ayrıştırıcı bir ilkel dönüştürülebilir veya bazı durumlarda bir nesneye dönüştürmek değişmez değer dize olarak ya da bir öznitelik değeri yorumlayabilir.Generally speaking, a XAML parser can either interpret an attribute value as a literal string that can be converted to a primitive, or convert it to an object by some means. Bir tür dönüştürücüsü başvurarak olduğu gibi bir anlamına gelir; Bu konu başlığı altında belgelenen TypeConverters ve XAML.One such means is by referencing a type converter; this is documented in the topic TypeConverters and XAML. Ancak, farklı bir davranış gerekli olduğu senaryolar da vardır.However, there are scenarios where different behavior is required. Örneğin, bir öznitelik değeri içinde yeni bir nesne grafiğinin sonuçlanması gerektiğini değil bir XAML işlemci sağlanabilir.For example, a XAML processor can be instructed that a value of an attribute should not result in a new object in the object graph. Bunun yerine, öznitelik grafiğin başka bir parçası olarak zaten oluşturulmuş bir nesne veya statik nesne başvuru sağlayan bir nesne grafiğinin neden.Instead, the attribute should result in an object graph that makes a reference to an already constructed object in another part of the graph, or a static object. XAML işlemci oluşturucusuna bir nesnenin varsayılan olmayan bağımsız değişkenleri sağlayan bir söz dizimini kullanacak şekilde sağlanabilir başka bir senaryodur.Another scenario is that a XAML processor can be instructed to use a syntax that provides non-default arguments to the constructor of an object. Bu işaretleme uzantısı çözümü burada sağlayabilir senaryoları türleridir.These are the types of scenarios where a markup extension can provide the solution.

Temel biçimlendirme uzantısı sözdizimiBasic Markup Extension Syntax

İşaretleme uzantısı değerlerini sağlamak için bir öznitelik kullanımı özelliklerinde, özellikleri bir özellik öğesi kullanımı ya da her ikisi de uygulanabilir.A markup extension can be implemented to provide values for properties in an attribute usage, properties in a property element usage, or both.

Bir öznitelik değeri sağlamak için kullanıldığında, bir işaretleme uzantısı dizisine bir XAML işlemci ayıran açma ve kapatma küme ayraçlarını varlığı sözdizimidir ({ve}).When used to provide an attribute value, the syntax that distinguishes a markup extension sequence to a XAML processor is the presence of the opening and closing curly braces ({ and }). İşaretleme uzantısı türü sonra büyük ayracını açtıktan hemen ardından dize belirteci tanımlanır.The type of markup extension is then identified by the string token immediately following the opening curly brace.

Özellik öğesi sözdizimine kullanıldığında, bir işaretleme uzantısı görsel olarak bir özellik öğesi değeri sağlamak için kullanılan herhangi bir öğe aynıdır: işaretleme uzantısı sınıfı (<> açılı köşeli ayraç içine, bir öğe olarak başvuran bir XAML öğe bildirimi ).When used in property element syntax, a markup extension is visually the same as any other element used to provide a property element value: a XAML element declaration that references the markup extension class as an element, enclosed within angle brackets (<>).

XAML tanımlı biçimlendirme uzantılarıXAML-Defined Markup Extensions

Çeşitli biçimlendirme uzantıları, XAML WPF uygulamasına özel değildir ancak bunun yerine iç uygulamaları veya özellikleri XAML dili olarak mevcut.Several markup extensions exist that are not specific to the WPF implementation of XAML, but are instead implementations of intrinsics or features of XAML as a language. Bu işaretleme uzantıları System.Xaml derleme genel .NET Framework XAML hizmetlerin bir parçası olarak uygulanır ve XAML dil XAML ad alanı içinde.These markup extensions are implemented in the System.Xaml assembly as part of the general .NET Framework XAML services, and are within the XAML language XAML namespace. Bu işaretleme Uzantıları yaygın biçimlendirme kullanımı açısından genellikle adlarıyla x: kullanım önek.In terms of common markup usage, these markup extensions are typically identifiable by the x: prefix in the usage. MarkupExtension Temel sınıf (System.Xaml ayrıca tanımlanmıştır) tüm biçimlendirme uzantıları XAML okuyucular ve WPF XAML dahil olmak üzere, XAML yazıcılar desteklenmesi için kullanması gereken desenini sağlar.The MarkupExtension base class (also defined in System.Xaml) provides the pattern that all markup extensions should use in order to be supported in XAML readers and XAML writers, including in WPF XAML.

  • x:Type Kaynakları Type adlandırılmış bir türün nesnesi.x:Type supplies the Type object for the named type. Bu özellik, stilleri ve şablonları içinde en sık kullanıldığı.This facility is used most frequently in styles and templates. Ayrıntılar için bkz x: Type işaretleme uzantısı.For details, see x:Type Markup Extension.

  • x:Static statik değer oluşturur.x:Static produces static values. Değerleri, doğrudan bir hedef özelliğin değerinin türü olmayan değer türü kod varlıklardan gelir, ancak bu türe değerlendirilebilir.The values come from value-type code entities that are not directly the type of a target property's value, but can be evaluated to that type. Ayrıntılar için bkz x: Static işaretleme uzantısı.For details, see x:Static Markup Extension.

  • x:Null belirtir null bir özellik için bir değer olarak ve öznitelikleri veya özellik öğe değerleri için kullanılabilir.x:Null specifies null as a value for a property and can be used either for attributes or property element values. Ayrıntılar için bkz x: Null işaretleme uzantısı.For details, see x:Null Markup Extension.

  • x:Array genel XAML sözdizimi, nereye koleksiyonu desteği WPF temel öğeler tarafından sağlanan ve denetim modelleri kasıtlı olarak kullanılmaz çalışmalarını dizilerde oluşturulması için destek sağlar.x:Array provides support for creation of general arrays in XAML syntax, for cases where the collection support provided by WPF base elements and control models is deliberately not used. Ayrıntılar için bkz x: Array işaretleme uzantısı.For details, see x:Array Markup Extension.

Not

x: Önek, XAML dili ön tanımlı bir XAML dosyası veya üretim kök öğesi tipik XAML ad alanı eşlemesi için kullanılır.The x: prefix is used for the typical XAML namespace mapping of the XAML language intrinsics, in the root element of a XAML file or production. Örneğin, WPF uygulamaları için Visual Studio şablonları kullanan bir XAML dosyası başlatmak x: eşleme.For example, the Visual Studio templates for WPF applications initiate a XAML file using this x: mapping. Kendi XAML ad alanı eşlemesi, farklı ön ek belirteç seçebilir, ancak bu belgeleri varsayılan kabul edecek x: karşılık olarak, XAML dili için XAML ad alanı tanımlı bir parçası olan bu varlıklar tanımlayan bir yol eşleme WPF için varsayılan ad alanı veya diğer XAML ad alanları için belirli bir framework ilişkili değil.You could choose a different prefix token in your own XAML namespace mapping, but this documentation will assume the default x: mapping as a means of identifying those entities that are a defined part of the XAML namespace for the XAML language, as opposed to the WPF default namespace or other XAML namespaces not related to a specific framework.

WPF özel biçimlendirme uzantılarıWPF-Specific Markup Extensions

Kaynak başvurularının destekleyen WPF programlamada kullanılan en yaygın biçimlendirme uzantıları olanlardır (StaticResource ve DynamicResource) hem de veri bağlamayı destekleyen (Binding).The most common markup extensions used in WPF programming are those that support resource references (StaticResource and DynamicResource), and those that support data binding (Binding).

  • StaticResource bir değer için bir özellik zaten tanımlı bir kaynak değerini değiştirerek sağlar.StaticResource provides a value for a property by substituting the value of an already defined resource. A StaticResource değerlendirme XAML yükleme zamanında nihai olarak yapılır ve çalışma zamanında nesne grafiğini erişiminiz yok.A StaticResource evaluation is ultimately made at XAML load time and does not have access to the object graph at run time. Ayrıntılar için bkz StaticResource işaretleme uzantısı.For details, see StaticResource Markup Extension.

  • DynamicResource değeri, bu değer bir kaynağa bir çalışma zamanı başvurusu olmasını erteleyerek için bir özellik sağlar.DynamicResource provides a value for a property by deferring that value to be a run-time reference to a resource. Dinamik kaynak başvuru her zaman böyle bir kaynak erişilir ve çalışma zamanında nesne grafiğini erişimi olan yeni bir arama zorlar.A dynamic resource reference forces a new lookup each time that such a resource is accessed and has access to the object graph at run time. Bu erişim sağlamak DynamicResource kavramı WPF özelliği sistemde bağımlılık özellikleri tarafından desteklenir ve ifade değerlendirilir.In order to get this access, DynamicResource concept is supported by dependency properties in the WPF property system, and evaluated expressions. Bu nedenle yalnızca kullanabilirsiniz DynamicResource bir bağımlılık özelliği hedef için.Therefore you can only use DynamicResource for a dependency property target. Ayrıntılar için bkz DynamicResource işaretleme uzantısı.For details, see DynamicResource Markup Extension.

  • Binding sınır değeri üst nesneye çalışma zamanında uygular veri bağlamını kullanarak, bir özellik için veri sağlar.Binding provides a data bound value for a property, using the data context that applies to the parent object at run time. Veri bağlama belirtmek için bir önemli satır içi söz dizimi sağlar çünkü bu işaretleme uzantısı oldukça karmaşıktır.This markup extension is relatively complex, because it enables a substantial inline syntax for specifying a data binding. Ayrıntılar için bkz biçimlendirme uzantısı bağlama.For details, see Binding Markup Extension.

  • RelativeSource kaynak bilgileri sağlar bir Binding çalışma zamanı nesne ağacındaki birkaç olası ilişkilerin gidebilirsiniz.RelativeSource provides source information for a Binding that can navigate several possible relationships in the run-time object tree. Bu, çok amaçlı şablonlarında oluşturulan veya kod çevreleyen nesne ağacının tam bilgisi olmadan oluşturulmuş bağlamaları için özelleştirilmiş kaynağını sağlar.This provides specialized sourcing for bindings that are created in multi-use templates or created in code without full knowledge of the surrounding object tree. Ayrıntılar için bkz RelativeSource işaretleme uzantısı.For details, see RelativeSource MarkupExtension.

  • TemplateBinding Şablon kullanacağı sınıfının nesne model tanımlı özelliklerinden gelen şablonlu özellikleri için değerleri kullanmak üzere bir denetim şablonu sağlar.TemplateBinding enables a control template to use values for templated properties that come from object-model-defined properties of the class that will use the template. Diğer bir deyişle, özelliği şablon tanımı içinden şablonu uygulandıktan sonra yalnızca var olan bir bağlam erişebilirsiniz.In other words, the property within the template definition can access a context that only exists once the template is applied. Ayrıntılar için bkz TemplateBinding Markup Extension.For details, see TemplateBinding Markup Extension. Pratik kullanımı hakkında daha fazla bilgi için TemplateBinding, bkz: ControlTemplates örneği ile stillendirme.For more information on the practical use of TemplateBinding, see Styling with ControlTemplates Sample.

  • ColorConvertedBitmap göreceli olarak gelişmiş bir görüntü senaryosunu destekler.ColorConvertedBitmap supports a relatively advanced imaging scenario. Ayrıntılar için bkz ColorConvertedBitmap işaretleme uzantısı.For details, see ColorConvertedBitmap Markup Extension.

  • ComponentResourceKey ve ThemeDictionary kaynakları ve özel denetimler ile paketlenmiştir temaları için özellikle kaynak arama özelliklerini destekler.ComponentResourceKey and ThemeDictionary support aspects of resource lookup, particularly for resources and themes that are packaged with custom controls. Daha fazla bilgi için ComponentResourceKey işaretleme uzantısı, ThemeDictionary işaretleme uzantısı, veya denetim yazmaya genel bakış.For more information, see ComponentResourceKey Markup Extension, ThemeDictionary Markup Extension, or Control Authoring Overview.

* Uzantı sınıfları*Extension Classes

Genel XAML dil hem WPF'ye özgü biçimlendirme uzantıları için her bir işaretleme uzantısı davranışını bir XAML işlemci tanımlanır bir *Extension türetilen sınıf MarkupExtensionve bir uygulamasını sağlar ProvideValue yöntem.For both the general XAML language and WPF-specific markup extensions, the behavior of each markup extension is identified to a XAML processor through a *Extension class that derives from MarkupExtension, and provides an implementation of the ProvideValue method. Bu yöntem her uzantı üzerinde işaretleme uzantısı değerlendirildiğinde, döndürülen nesneyi sağlar.This method on each extension provides the object that is returned when the markup extension is evaluated. Döndürülen nesne, genellikle işaretleme uzantısı için geçirilen çeşitli dize belirteçleri göre değerlendirilir.The returned object is typically evaluated based on the various string tokens that are passed to the markup extension.

Örneğin, StaticResourceExtension SAX gerçek kaynak araması yüzey uygulamasını böylece kendi ProvideValue uygulaması için kullanılan bir dize olan, belirli bir uygulama girişi ile istenen nesneyi döndürür Kaynak tarafından arayın, x:Key.For example, the StaticResourceExtension class provides the surface implementation of actual resource lookup so that its ProvideValue implementation returns the object that is requested, with the input of that particular implementation being a string that is used to look up the resource by its x:Key. Bu uygulama ayrıntısı çoğunu, var olan bir işaretleme uzantısı kullanıyorsanız önemli değildir.Much of this implementation detail is unimportant if you are using an existing markup extension.

Bazı biçimlendirme uzantıları dize belirteci bağımsız değişken kullanmayın.Some markup extensions do not use string token arguments. Statik veya tutarlı bir değer döndürürler olduğundan veya hangi değeri döndürülmelidir için bağlam geçtiğini hizmetlerden biri aracılığıyla ulaşılabilir olduğundan budur serviceProvider parametresi.This is either because they return a static or consistent value, or because context for what value should be returned is available through one of the services passed through the serviceProvider parameter.

*Extension Adlandırma desendir kolaylık ve tutarlılık için.The *Extension naming pattern is for convenience and consistency. Bu sırada bir işaretleme uzantısı için destek gibi o sınıfı tanımlamak XAML işlemcisi için gerekli değildir.It is not necessary in order for a XAML processor to identify that class as support for a markup extension. Kod temelinizde System.Xaml içerir ve .NET Framework XAML hizmetlerinde uygulamaları kullanan sürece tüm olan bir XAML işaretleme uzantısı öğesinden türetilen olarak tanınması gerekli MarkupExtension ve yapı sözdizimini desteklemek için.So long as your codebase includes System.Xaml and uses .NET Framework XAML Services implementations, all that is necessary to be recognized as a XAML markup extension is to derive from MarkupExtension and to support a construction syntax. WPF değillerdir işaretleme uzantısı etkinleştirilirken sınıfları tanımlar *Extension deseni, örneğin adlandırma Binding.WPF defines markup extension-enabling classes that do not follow the *Extension naming pattern, for example Binding. Genellikle Bunun nedeni sınıfı saf işaretleme uzantısı desteği ötesinde desteklemesidir.Typically the reason for this is that the class supports scenarios beyond pure markup extension support. Durumunda, Binding, sınıf XAML ile ilgisi olan senaryoları için yöntemlere ve özelliklere nesnenin çalışma zamanı erişimi destekler.In the case of Binding, that class supports run-time access to methods and properties of the object for scenarios that have nothing to do with XAML.

Uzantı sınıfı yorumu başlatma metinExtension Class Interpretation of Initialization Text

Ad ve küme ayraçları içinde hala işaretleme uzantısı aşağıdaki dize belirteçleri aşağıdaki yollardan biriyle XAML işlemcisi tarafından yorumlanır:The string tokens following the markup extension name and still within the braces are interpreted by a XAML processor in one of the following ways:

  • Virgül her zaman ayırıcı veya ayrı ayrı belirteçlerin sınırlayıcı temsil eder.A comma always represents the separator or delimiter of individual tokens.

  • Her belirteç, ayrı ayrı belirteçlerin herhangi bir eşittir işareti içermiyorsa, bir oluşturucu bağımsız değişken olarak kabul edilir.If the individual separated tokens do not contain any equals signs, each token is treated as a constructor argument. Her Oluşturucu parametresi olarak bu imza tarafından saklanır ve doğru sırada bu imza tarafından beklenen beklenen türde verilmelidir.Each constructor parameter must be given as the type expected by that signature, and in the proper order expected by that signature.

    Not

    XAML işlemci çiftlerinin sayısını bağımsız değişken sayısı ile eşleşen bir oluşturucu çağırmanız gerekir.A XAML processor must call the constructor that matches the argument count of the number of pairs. Özel biçimlendirme uzantısı uyguluyorsanız, bu nedenle, aynı bağımsız değişken sayısı ile birden çok Oluşturucu sağlamaz.For this reason, if you are implementing a custom markup extension, do not provide multiple constructors with the same argument count. Birden fazla biçimlendirme uzantısı Oluşturucusu yoluyla aynı parametre sayısı mevcutsa XAML işlemci nasıl davranacağını davranışını tanımlı değil, ancak XAML işlemci uygulamasında bu durum varsa, kullanımıyla ilgili bir özel durum izni olduğunu tahmin etmeleri gereken İşaretleme uzantısı tür tanımlarını.The behavior for how a XAML processor behaves if more than one markup extension constructor path with the same parameter count exists is not defined, but you should anticipate that a XAML processor is permitted to throw an exception on usage if this situation exists in the markup extension type definitions.

  • Tek tek ayrılmış, belirteçleri eşittir işareti içeren ve XAML işlemci için işaretleme uzantısı önce varsayılan oluşturucuyu çağırır.If the individual separated tokens contain equals signs, then a XAML processor first calls the default constructor for the markup extension. Ardından, her ad = değer çifti işaretleme uzantısı ve bu özelliğe atanacak bir değer var olan bir özellik adı olarak yorumlanır.Then, each name=value pair is interpreted as a property name that exists on the markup extension, and a value to assign to that property.

  • Oluşturucu davranış ve davranışı bir işaretleme uzantısı'nda özelliğini arasında paralel bir sonuç ise, hangi davranışın kullandığınız önemli değildir.If there is a parallel result between the constructor behavior and the property setting behavior in a markup extension, it does not matter which behavior you use. Kullanmak için daha yaygın bir kullanımdır özelliği=değer çiftleri için birden fazla ayarlanabilir özelliğe yalnızca, biçimlendirme daha bilinçli kolaylaştırır ve, varsa biçimlendirme uzantıları Oluşturucu parametresi yanlışlıkla sırasını değiştirmek olasılığı daha azdır.It is more common usage to use the property=value pairs for markup extensions that have more than one settable property, if only because it makes your markup more intentional and you are less likely to accidentally transpose constructor parameters. (Belirttiğinizde özellik = değer çiftleri, bu özelliklerin herhangi bir sırada olabilir.) Ayrıca, bir işaretleme uzantısı ayarlar, ayarlanabilir özelliklerin her biri bir oluşturucu parametresi sağlayan bir garanti yoktur.(When you specify property=value pairs, those properties may be in any order.) Also, there is no guarantee that a markup extension supplies a constructor parameter that sets every one of its settable properties. Örneğin, Binding uzantı aracılığıyla ayarlanabilir birçok özelliklere sahip bir işaretleme uzantısı özelliği=değer form, ancak Binding yalnızca iki destekler Oluşturucular: varsayılan bir oluşturucu ve bir başlangıç yolunu ayarlar bir.For example, Binding is a markup extension, with many properties that are settable through the extension in property=value form, but Binding only supports two constructors: a default constructor, and one that sets an initial path.

  • Değişmez değer virgül, bir işaretleme uzantısı olmadan escapement geçirilemez.A literal comma cannot be passed to a markup extension without escapement.

Kaçış dizileri ve İşaretleme uzantılarıEscape Sequences and Markup Extensions

Öznitelik bir XAML işlemcisi işleme ve küme ayraçlarının işaretleme uzantısı sırasının göstergeleri kullanır.Attribute handling in a XAML processor uses the curly braces as indicators of a markup extension sequence. Değişmez değer küme ayracı tarafından izlenen bir boş küme ayracı çifti kullanarak bir kaçış dizisi girerek bir değişmez değer küme ayracı karakteri öznitelik değeri gerekirse üretmek mümkündür.It is also possible to produce a literal curly brace character attribute value if necessary, by entering an escape sequence using an empty curly brace pair followed by the literal curly brace. Bkz: {} kaçış sırası - işaretleme uzantısı.See {} Escape Sequence - Markup Extension.

XAML kullanım işaretleme uzantılarında iç içe geçirmeNesting Markup Extensions in XAML Usage

İç içe geçmiş birden fazla biçimlendirme uzantıları desteklenir ve her bir işaretleme uzantısı en derin önce değerlendirilir.Nesting of multiple markup extensions is supported, and each markup extension will be evaluated deepest first. Örneğin, aşağıdaki kullanım göz önünde bulundurun:For example, consider the following usage:

<Setter Property="Background"  
  Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />  

Bu kullanımı x:Static ifade değerlendirilir ve bir dize döndürür.In this usage, the x:Static statement is evaluated first and returns a string. Dize bağımsız değişkeni olarak ardından kullanılır DynamicResource.That string is then used as the argument for DynamicResource.

İşaretleme uzantıları ve özellik öğesi sözdizimiMarkup Extensions and Property Element Syntax

Bir özellik öğesi değeri dolduran bir nesne öğesi kullanıldığında, bir işaretleme uzantısı sınıfı görsel olarak ayırt bir tipik nesne türü tarafından desteklenen öğesinden XAML içinde kullanılabilir.When used as an object element that fills a property element value, a markup extension class is visually indistinguishable from a typical type-backed object element that can be used in XAML. Tipik nesne öğesi ve bir işaretleme uzantısı pratik farkı işaretleme uzantısı türü belirtilmiş bir değer için değerlendirilen veya bir ifade olarak ertelenmiş, ' dir.The practical difference between a typical object element and a markup extension is that the markup extension is either evaluated to a typed value or deferred as an expression. Bu nedenle mekanizmaları muhtemel tür hatalarına işaretleme uzantısı için bir özellik değerleri farklı ve geç bağlama özelliği diğer programlama modellerinde nasıl işleneceğini benzer olacaktır.Therefore the mechanisms for any possible type errors of property values for the markup extension will be different, similar to how a late-bound property is treated in other programming models. Bir sıradan nesne öğesi, XAML ayrıştırıldığında ayarı hedef özelliği türünü eşleştirin için değerlendirilecek.An ordinary object element will be evaluated for type match against the target property it is setting when the XAML is parsed.

Nesne öğesi sözdiziminde, bir özellik öğesi doldurmak için kullanılan çoğu biçimlendirme uzantıları içinde içerik ya da daha fazla özellik öğesi sözdizimine sahip olmaz.Most markup extensions, when used in object element syntax to fill a property element, would not have content or any further property element syntax within. Bu nedenle nesne öğesi etiketi kapatın ve hiçbir alt öğeleri sağlamak.Thus you would close the object element tag, and provide no child elements. Herhangi bir nesne öğesi bir XAML işlemcisi tarafından karşılaşıldığında ayrıştırılmış öğeden oluşturulan nesne başlatır, o sınıf için oluşturucu çağrılır.Whenever any object element is encountered by a XAML processor, the constructor for that class is called, which instantiates the object created from the parsed element. İşaretleme uzantısı sınıfı farklı değildir: biçimlendirme uzantınızı nesne öğesi sözdiziminde kullanılabilir olmasını istiyorsanız, varsayılan bir oluşturucu sağlamanız gerekir.A markup extension class is no different: if you want your markup extension to be usable in object element syntax, you must provide a default constructor. Var olan bazı biçimlendirme uzantıları etkili başlatma için belirtilen en az bir gerekli özellik değerine sahip.Some existing markup extensions have at least one required property value that must be specified for effective initialization. Bu durumda, bu özellik değeri bir özellik özniteliğini nesne öğede genellikle verilir.If so, that property value is typically given as a property attribute on the object element. İçinde XAML Namespace (x:) Dil özellikleri ve WPF XAML uzantıları başvuru sayfalarına, biçimlendirme gerekli özellikleri (ve gerekli özelliklerin adları) uzantıları not ettiğiniz.In the XAML Namespace (x:) Language Features and WPF XAML Extensions reference pages, markup extensions that have required properties (and the names of required properties) will be noted. Nesne öğesi sözdizimi veya öznitelik sözdizimi belirli işaretleme uzantılarına izin verilmeyen, başvuru sayfaları da fark edeceksiniz.Reference pages will also note if either object element syntax or attribute syntax is disallowed for particular markup extensions. Önemli bir durumdur x: Array işaretleme uzantısı, hangi destekleyemez öznitelik sözdizimi içeriği o dizinin içinde etiketleme içeriği olarak belirtilmesi gerektiğinden.A notable case is x:Array Markup Extension, which cannot support attribute syntax because the contents of that array must be specified within the tagging as content. Dizi içerikleri, genel nesneler olarak işlenir, bu yüzden hiçbir öznitelik için varsayılan tür dönüştürücüsü mantıklı olur.The array contents are handled as general objects, therefore no default type converter for the attribute is feasible. Ayrıca, x: Array işaretleme uzantısı gerektiren bir type parametresi.Also, x:Array Markup Extension requires a type parameter.

Ayrıca bkz.See also