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

Bu konu, kendi sözdizimi kurallarına, amaç ve bunları altını çizen sınıfı nesne modeli de dahil olmak üzere XAML, 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 XAML Hizmetleri .NET uygulaması 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ımda WPF XAML işaretleme uzantılarına ayrıntılarını verir.This topic specifically details markup extensions for use in WPF XAML.

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

Genel olarak bakıldığında, XAML ayrıştırıcı bir ilkel türe dönüştürülebilir veya bazı yollarla nesneye dönüştürülemiyor sabit değerli bir dize olarak ya da bir öznitelik değeri çevirebilir.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. Tür dönüştürücüsünü başvurarak bu tür bir anlamına gelir; Bu konuda belgelenmiştir 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 vardır.However, there are scenarios where different behavior is required. Örneğin, bir XAML işlemci özniteliğin değerini yeni bir nesne grafiğinin nesne içinde sonuçlanması gerektiğini değil 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 yapılandırılmış bir nesne veya statik bir nesneye başvuru yapan 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şturucunun bir nesnenin varsayılan olmayan bağımsız değişkenler sağlayan bir sözdizimi kullanılacak 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 senaryolar biçimlendirme uzantısı çözümü burada sağlayabilir 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

Biçimlendirme uzantısı değerlerini sağlamak için bir öznitelik kullanımı özelliklerinde, bir özellik öğesi kullanımı ya da her ikisini de özellikleri için 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ılan bir biçimlendirme uzantısı sırası bir XAML işlemciye ayırt sözdizimi açma ve küme ayraçları kapatma varlığını olur ({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 hemen parantezinden izleyen dize belirteci tarafından tanımlanır.The type of markup extension is then identified by the string token immediately following the opening curly brace.

Özellik öğesi sözdiziminde kullanıldığında, bir işaretleme uzantısı görsel olarak bir özellik öğesi değeri sağlamak için kullanılan başka bir öğenin aynıdır: biçimlendirme uzantısı sınıfı (<> köşeli parantez alınmış 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ımlanan biçimlendirme uzantılarıXAML-Defined Markup Extensions

Birçok biçimlendirme uzantıları XAML WPF uygulaması özel değildir ancak bunun yerine iç bilgileri uygulamalarında veya XAML dili olarak özelliklerini olan 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 biçimlendirme uzantıları System.Xaml derleme genel .NET Framework XAML Hizmetleri bir parçası olarak uygulanır ve XAML dili XAML ad 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. Ortak biçimlendirme kullanımı açısından bu biçimlendirme uzantıları tarafından tanımlanabilen genellikle x: kullanımı öneki.In terms of common markup usage, these markup extensions are typically identifiable by the x: prefix in the usage. MarkupExtension (System.Xaml ayrıca tanımlanmıştır) temel sınıf tüm biçimlendirme uzantıları XAML okuyucuları ve WPF XAML dahil olmak üzere XAML yazıcılarının desteklenmesi için kullanması gereken desen 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 sağladığı Type adlandırılmış türü için nesnesi.x:Type supplies the Type object for the named type. Bu özellik, stil ve şablonlar en sık kullanılır.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 hedef özelliğin değeri türü olmayan değer türü kodu varlıklardan gelir, ancak bu tür 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 öznitelikler veya özellik öğesi 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 XAML sözdizimi, durumlarda koleksiyonu desteği WPF temel öğeleri tarafından sağlanan ve denetim modelleri kasıtlı olarak kullanılmaz genel 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: Öneki, XAML dili ön tanımlı bir XAML dosyası veya üretim kök öğesinin 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, bunu kullanan XAML dosyası WPF uygulamalar için Visual Studio şablonları 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ı önek belirteci seçebilir, ancak bu belgeleri varsayılan varsayacak x: XAML ad uzayı XAML dili için tanımlanmış bir parçası olan bu varlıkların aygıtlardır tanımlamanın bir araç olarak eşleme WPF ile varsayılan ad alanı veya diğer XAML ad uzayları 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 özgü biçimlendirme uzantılarıWPF-Specific Markup Extensions

Kaynak başvuruları destekleyen WPF programlamada kullanılan en yaygın biçimlendirme uzantıları dosyalardır (StaticResource ve DynamicResource), 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 önceden tanımlanan bir kaynağa değerini getirilmesiyle bir özellik için bir değer sağlar.StaticResource provides a value for a property by substituting the value of an already defined resource. A StaticResource değerlendirme sonuçta XAML yükleme sırasında yaptığı ve çalışma zamanında nesne grafiğinin erişimi 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 biçimlendirme uzantısı.For details, see StaticResource Markup Extension.

  • DynamicResource bir değer özelliği için bir kaynak için çalışma zamanı başvuru olması için bu değeri ertelemeyi tarafından 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şvurusu yeni bir arama her zaman böyle bir kaynak erişilir ve çalışma zamanında nesne grafiğinin erişimi 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 alabilmek için DynamicResource kavram WPF özellik sistemindeki bağımlılık özellikleri tarafından desteklenir ve ifadeler 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 Biçimlendirme Uzantısı.For details, see DynamicResource Markup Extension.

  • Binding Çalışma zamanında üst nesne için geçerli veri bağlamı kullanarak bir özellik için değer veri bağlı 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 önemli satır içi sözdizimi sağladığından bu biçimlendirme 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 ait kaynak bilgileri sağlayan bir Binding birkaç olası çalışma zamanı nesne ağacına ilişkilerde gezinme.RelativeSource provides source information for a Binding that can navigate several possible relationships in the run-time object tree. Bu, çok kullanım şablonlarında oluşturulan veya çevresindeki nesne ağacının hakkında tam bilgi olmadan kod oluşturulan bağlamaları için özel kaynak 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 MarkupExtension.For details, see RelativeSource MarkupExtension.

  • TemplateBinding Şablon kullanacağınız sınıfının nesne modeli tanımlanan özelliklerinden gelen şablonlu özellikleri için değerleri kullanmak 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, şablon tanımının içinde özelliği şablon 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 biçimlendirme uzantısı.For details, see TemplateBinding Markup Extension. Pratik kullanımı hakkında daha fazla bilgi için TemplateBinding, bkz: ControlTemplates örneği ile stil oluşturma.For more information on the practical use of TemplateBinding, see Styling with ControlTemplates Sample.

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

  • ComponentResourceKey ve ThemeDictionary özellikle kaynakları ve özel denetimler ile paketlenmiştir Temalar için 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 bkz: ComponentResourceKey Biçimlendirme Uzantısı, ThemeDictionary biçimlendirme uzantısı, veya denetimine genel bakış yazma.For more information, see ComponentResourceKey Markup Extension, ThemeDictionary Markup Extension, or Control Authoring Overview.

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

Genel XAML dili hem WPF özgü biçimlendirme uzantıları için her biçimlendirme uzantısı davranışını XAML işlemciye tanımlanan bir *Extension öğesinden 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 biçimlendirme 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 biçimlendirme uzantısı 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 arama yüzey uyarlamasını böylece kendi ProvideValue uygulaması için kullanılan bir dize olması, belirli bir uygulamaya girişi istenen nesnesini döndürür Kaynak tarafından aramak kendi 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ılarını çoğunu varolan 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şkenleri kullanmayın.Some markup extensions do not use string token arguments. Bir statik veya tutarlı değeri döndürmeleri olduğundan veya hangi değeri döndürülmelidir için bağlam geçtiğini hizmetlerden biri aracılığıyla kullanı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 modeli aşağıdaki kolaylığı ve tutarlılığı için gibidir.The *Extension naming pattern is for convenience and consistency. Biçimlendirme uzantısı için destek gibi o sınıfın tanımlamak XAML işlemci sırayla gerekli değildir.It is not necessary in order for a XAML processor to identify that class as support for a markup extension. Kod temeliniz System.Xaml içerir ve .NET Framework XAML hizmetlerinde uygulamaları kullanan sürece, tüm olan XAML biçimlendirme uzantısı öğesinden türetilen olarak kabul edilecek gerekli MarkupExtension ve yapım 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 devam etmeyin biçimlendirme uzantı etkinleştiriliyor sınıfları tanımlar *Extension düzeni, örneğin adlandırma Binding.WPF defines markup extension-enabling classes that do not follow the *Extension naming pattern, for example Binding. Genellikle bu sınıfı, saf biçimlendirme uzantısı desteği ötesinde destekler nedeni.Typically the reason for this is that the class supports scenarios beyond pure markup extension support. Durumunda Binding, sınıf XAML ile ilgisi yoktur senaryoları için çalışma zamanı erişim yöntemleri ve nesne özelliklerini 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ı başlatma metin yorumuExtension Class Interpretation of Initialization Text

İşaretleme uzantısı adını ve küme ayraçları içinde hala aşağıdaki dize belirteçleri XAML işlemcisi tarafından aşağıdaki yollardan biriyle 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 bir ayırıcı veya bireysel belirteçlerin sınırlayıcı'temsil eder.A comma always represents the separator or delimiter of individual tokens.

  • Tek tek ayrılmış belirteçlerin herhangi eşittir işareti içermiyorsa, her belirteç oluşturucu bağımsız değişkeni 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, bu imza ve bu imzaya göre beklenen doğru sırada beklenen türe olarak 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 çifti bağımsız değişken sayısı eşleşen 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şturucular sağlamaz.For this reason, if you are implementing a custom markup extension, do not provide multiple constructors with the same argument count. Aynı parametre sayısı ile birden fazla biçimlendirme uzantısı Oluşturucusu yolu varsa bir XAML işlemci nasıl davranacağını davranışını tanımlı değil, ancak bir XAML işlemci bu durum varsa kullanımıyla ilgili bir özel durum izni olduğunu düşündüğünüz biçimlendirme uzantısı türü tanımlar.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, sonra XAML işlemci biçimlendirme uzantısı için önce varsayılan oluşturucu ç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 biçimlendirme uzantısı ve bu özelliğe atamak için bir değer var. ö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ışını ve bir işaretleme uzantısı ayarı davranışını özelliği arasında paralel bir sonuç ise, hangi davranışın kullandığınız bir önemi yoktur.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ğeri çiftleri için birden fazla ayarlanabilir özelliği, yalnızca, biçimlendirme daha kasıtlı kolaylaştırır ve, varsa biçimlendirme uzantıları yanlışlıkla Oluşturucu parametreleri sırasını değiştirmek daha az olabilir.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. (Özellik belirttiğinizde, değer çiftleri = bu özelliklerin herhangi bir sırada olabilir.) Ayrıca, bir işaretleme uzantısı her biri ayarlanabilir özelliklerini ayarlar Oluşturucu parametresini sağlayan garantisi 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ısı aracılığıyla ayarlanabilir birçok özelliklere sahip bir biçimlendirme uzantısı özelliği=değeri form, ancak Binding yalnızca iki destekler Oluşturucular: varsayılan bir oluşturucu ve bir başlangıç yolunu ayarlar biri.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 escapement olmadan biçimlendirme uzantısı için geçirilemez.A literal comma cannot be passed to a markup extension without escapement.

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

XAML işlemcide işleme özniteliğini süslü ayraçlar biçimlendirme uzantısı dizisi göstergesi olarak kullanır.Attribute handling in a XAML processor uses the curly braces as indicators of a markup extension sequence. Değişmez değer kuşak tarafından izlenen bir boş kaşlı ayraç çifti kullanarak bir kaçış sırası girerek değişmez değer kuşak karakter öznitelik değer gerekirse oluşturmak 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: {} çıkış sırası - biçimlendirme uzantısı.See {} Escape Sequence - Markup Extension.

Biçimlendirme uzantıları XAML kullanımı iç içe geçmeNesting Markup Extensions in XAML Usage

Birden çok biçimlendirme uzantıları iç içe geçmiş desteklenir ve her biçimlendirme uzantısı 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 deyimi ilk olarak 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 sonra kullanılır DynamicResource.That string is then used as the argument for DynamicResource.

Biçimlendirme uzantıları ve özellik öğesi sözdizimiMarkup Extensions and Property Element Syntax

Bir özellik öğesi değeri dolduran bir nesne öğesi olarak kullanıldığında, bir işaretleme uzantısı XAML'de kullanılabilir tipik nesne türü destekli öğeden görsel olarak ayırt sınıftır.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. Pratik arasındaki tipik nesne öğesi ve bir işaretleme uzantısı biçimlendirme uzantısı türü belirtilmiş bir değer hesaplanan veya bir ifade olarak ertelenmiş olduğunu farktır.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ı biçimlendirme uzantısı için özellik değerlerinin olası tür hatalar için farklı ve diğer programlama modelleri geç bağlama özelliğini 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. Sıradan object öğesi türü eşleştirin XAML ayrıştırıldığında ayarını hedef özelliği için değerlendirilir.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ıldığında, çoğu biçimlendirme uzantıları, içerik ya da daha fazla özellik öğesi sözdizimini içinde 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 öğe etiketi kapatın ve hiçbir alt öğeleri sağlayın.Thus you would close the object element tag, and provide no child elements. Herhangi bir nesne öğesi XAML işlemcisi tarafından karşılaşıldığında, ayrıştırılmış öğesinden oluşturulan nesnesini başlatır o sınıfın Oluşturucusu ç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. Biçimlendirme uzantısı sınıfı farklı değildir: nesne öğesi sözdiziminde kullanılabilmesi için biçimlendirme uzantısı 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. Öyleyse, bu özellik değeri olarak bir özellik özniteliği genellikle nesnesi öğesinde 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ı, biçimlendirme gerekli özellikleri (ve gerekli özellikleri adları) sahip olan uzantı 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. Başvuru sayfaları, ayrıca nesne öğesi sözdizimi veya öznitelik sözdizimi belirli biçimlendirme uzantıları için izin verilmeyen olmadığını unutmayın.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 çünkü bu dizinin içeriğini içinde etiketleme içeriği olarak belirtilmelidir.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çeriği genel nesneler olarak işlenir, bu nedenle hiçbir öznitelik için varsayılan tür dönüştürücüsünü uygulanabilirdir.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

XAML'ye Genel Bakış (WPF)XAML Overview (WPF)
XAML Ad Alanı (x:) Dil ÖzellikleriXAML Namespace (x:) Language Features
WPF XAML UzantılarıWPF XAML Extensions
StaticResource İşaretleme UzantısıStaticResource Markup Extension
İşaretleme Uzantısı BağlamaBinding Markup Extension
DynamicResource İşaretleme UzantısıDynamicResource Markup Extension
x:Type İşaretleme Uzantısıx:Type Markup Extension