XAML genel bakış (WPF)XAML overview (WPF)

Bu konu XAML dilinin özelliklerini açıklar ve yazmak için XAML nasıl kullanabileceğinizi gösteren Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) uygulamalar.This topic describes the features of the XAML language and demonstrates how you can use XAML to write Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) applications. Bu konu özel olarak uygulandığı şekilde XAML tanımlayan WPFWPF.This topic specifically describes XAML as implemented by WPFWPF. XAML kendisini olan daha büyük bir dil kavramını WPFWPF.XAML itself is a larger language concept than WPFWPF.

XAML nedir?What is XAML?

XAML bir bildirim temelli bir biçimlendirme dilidir.XAML is a declarative markup language. .NET Framework programlama modeli için uygulanan gibi XAML oluşturma basitleştiren bir UIUI .NET Framework uygulaması.As applied to the .NET Framework programming model, XAML simplifies creating a UIUI for a .NET Framework application. Oluşturabileceğiniz görünür UIUI öğelerini tanımlayıcı XAML biçimlendirmede ve ardından ayrı UIUI arka plan kod dosyalarını kullanarak çalışma zamanı mantığını tanımından katılmış kısmi sınıf tanımları aracılığıyla biçimlendirmeye.You can create visible UIUI elements in the declarative XAML markup, and then separate the UIUI definition from the run-time logic by using code-behind files, joined to the markup through partial class definitions. XAML doğrudan nesneleri belirli bir derlemede tanımlanan türlerin yedekleme kümesi örneğinin temsil eder.XAML directly represents the instantiation of objects in a specific set of backing types defined in assemblies. Bu, genellikle bir yedekleme türü sistemine doğrudan KRAVAT olmadan yorumlanan bir dil olan çoğu diğer biçimlendirme diller, benzemez.This is unlike most other markup languages, which are typically an interpreted language without such a direct tie to a backing type system. Burada ayrı taraflar çalışabilir üzerinde bir iş akışı XAML sağlayan UIUI ve büyük olasılıkla farklı araçlar kullanarak, bir uygulama mantığı.XAML enables a workflow where separate parties can work on the UIUI and the logic of an application, using potentially different tools.

Metin olarak temsil edilen zaman XAML dosyaları genellikle sahip XML dosyalarıdır .xaml uzantısı.When represented as text, XAML files are XML files that generally have the .xaml extension. Dosya kodlama, ancak UTF-8 tipik olarak kodlama, XML tarafından kodlanabilir.The files can be encoded by any XML encoding, but encoding as UTF-8 is typical.

Aşağıdaki örnek, bir düğme parçası olarak nasıl oluşturacağınız gösterir. bir UIUI.The following example shows how you might create a button as part of a UIUI. Bu örnekte yalnızca bir özellik nasıl XAML ortak temsil sağlamak üzere tasarlanmıştır UIUI programlama metaphors (değildir eksiksiz bir örnek).This example is just intended to give you a flavor of how XAML represents common UIUI programming metaphors (it is not a complete sample).

<StackPanel>
  <Button Content="Click Me"/>
</StackPanel>

Kısaca XAML sözdizimiXAML syntax in brief

Aşağıdaki bölümlerde, temel tür XAML sözdizimi açıklayan ve kısa biçimlendirme örneği sağlar.The following sections explain the basic forms of XAML syntax, and give a short markup example. Bu bölümlerde, bu yedekleme türü sistemde nasıl temsil edildiğini gibi her söz dizimi biçimi hakkında tam bilgi sağlamak için amaçlanmamıştır.These sections are not intended to provide complete information about each syntax form, such as how these are represented in the backing type system. Daha fazla XAML sözdizimi hakkında bilgi için ayrıntıları her biri bu konu başlığı altında tanıtılan sözdizimi için bkz içinde XAML söz dizimi ayrıntı.For more information about the specifics of XAML syntax for each of the syntax forms introduced in this topic, see XAML Syntax In Detail.

Birkaç bir sonraki bölüme malzemeleri çoğunu önceki XML dil bilgisi varsa size temel olacaktır.Much of the material in the next few sections will be elementary to you, if you have previous familiarity with the XML language. XAML temel tasarım ilkelerinden birini bir sonucu budur.This is a consequence of one of the basic design principles of XAML. XAML dil kavramları kendi tanımlar, ancak bu kavramlar XML dil ve biçimlendirme formun içinde çalışır.The XAML language defines concepts of its own, but these concepts work within the XML language and markup form.

XAML nesne öğeleriXAML object elements

Bir nesne öğesi, genellikle bir türün örneğini bildirir.An object element typically declares an instance of a type. Bu tür, XAML dili olarak kullanan bir teknoloji için Yedekleme türleri sağlayan derlemelerde tanımlanır.That type is defined in the assemblies that provide the backing types for a technology that uses XAML as a language.

Nesne öğesi sözdizimi, her zaman bir açılı ayraç ile başlar (<).Object element syntax always starts with an opening angle bracket (<). Bu tür adıyla bir örneğini oluşturmak istediğiniz takip eder.This is followed by the name of the type where you want to create an instance. (Adın büyük olasılıkla bir ön ek, daha sonra açıklanacaktır bir kavram içerebilir.) Bundan sonra isteğe bağlı olarak öznitelikleri üzerinde nesne öğesi bildirebilirsiniz.(The name can possibly include a prefix, a concept that will be explained later.) After this, you can optionally declare attributes on the object element. Nesne öğesi etiketi tamamlamak için bir kapanış açılı ayraç (>) ile bitmelidir.To complete the object element tag, end with a closing angle bracket (>). Bunun yerine, herhangi bir içerik eğik çizgiyle etiket tamamlanıyor ve kapanış açılı ayracı art arda sahip olmayan bir kendi kendine kapanan form kullanabilirsiniz (/ >).You can instead use a self-closing form that does not have any content, by completing the tag with a forward slash and closing angle bracket in succession (/>). Örneğin, daha önce gösterilen biçimlendirme kod parçacığı yeniden bakın:For example, look at the previously shown markup snippet again:

<StackPanel>
  <Button Content="Click Me"/>
</StackPanel>

Bu iki nesne öğeleri belirtir: <StackPanel> (içerik ve daha sonra bir kapatma etiketi) ile ve <Button .../> (kendi kendine kapanan formu, birkaç öznitelik ile).This specifies two object elements: <StackPanel> (with content, and a closing tag later), and <Button .../> (the self-closing form, with several attributes). Nesne öğeleri StackPanel ve Button her eşlemesi tarafından tanımlanan bir sınıf adını WPFWPF parçası WPFWPF derlemeler.The object elements StackPanel and Button each map to the name of a class that is defined by WPFWPF and is part of the WPFWPF assemblies. Bir nesne öğesi etiketi belirttiğinizde, yeni bir örneğini oluşturmak için işleme XAML için bir yönerge oluşturur.When you specify an object element tag, you create an instruction for XAML processing to create a new instance. Her örneği, ayrıştırma ve XAML yüklenirken temel türün varsayılan oluşturucusunu çağırarak oluşturulur.Each instance is created by calling the default constructor of the underlying type when parsing and loading the XAML.

Öznitelik sözdizimi (Özellikler)Attribute syntax (properties)

Bir nesnenin özelliklerini genellikle nesne öğenin öznitelikleri ifade edilebilir.Properties of an object can often be expressed as attributes of the object element. Öznitelik sözdizimi, atama işleci (=) ve ardından özniteliği sözdiziminde ayarlanan özelliğin adı.An attribute syntax names the property that is being set in attribute syntax, followed by the assignment operator (=). Bir özniteliğin değeri tırnak işaretleri içinde yer alan bir dize olarak her zaman belirtildi.The value of an attribute is always specified as a string that is contained within quotation marks.

Öznitelik sözdizimi en kolaylaştırılmış özelliği ayarı söz dizimi ve biçimlendirme diller geçmişte kullandığınız geliştiriciler için kullanımı en kolay sözdizimi aşağıdaki gibidir.Attribute syntax is the most streamlined property setting syntax and is the most intuitive syntax to use for developers who have used markup languages in the past. Örneğin, aşağıdaki biçimlendirme metin kırmızı ve mavi bir arka plan görüntü metni olarak belirtilen ek olarak bulunan bir düğme oluşturur Content.For example, the following markup creates a button that has red text and a blue background in addition to display text specified as Content.

<Button Background="Blue" Foreground="Red" Content="This is a button"/>

Özellik öğesi sözdizimiProperty element syntax

Nesne veya özellik değeri sağlamak gerekli bilgileri yeterince öznitelik sözdizimi, dize kısıtlamaları ve tırnak işareti içinde ifade olamaz çünkü için bazı özellikleri bir nesne öğesi, öznitelik sözdizimi mümkün değil.For some properties of an object element, attribute syntax is not possible, because the object or information necessary to provide the property value cannot be adequately expressed within the quotation mark and string restrictions of attribute syntax. Bu durumlarda, özellik öğesi sözdizimine bilinen farklı bir sözdizimi kullanılabilir.For these cases, a different syntax known as property element syntax can be used.

Özellik öğenin başlangıç etiketinde sözdizimi < typeName.propertyName>.The syntax for the property element start tag is <typeName.propertyName>. Genellikle, bu özelliğin değeri olarak alan türü bir nesne öğesi içeriktir.Generally, the content of that tag is an object element of the type that the property takes as its value . İçerik belirttikten sonra özellik öğesi ile bir bitiş etiketi kapatmanız gerekir.After specifying content, you must close the property element with an end tag. Bitiş etiketi sözdizimi </ typeName.propertyName>.The syntax for the end tag is </typeName.propertyName>.

Öznitelik sözdizimi mümkündür, öznitelik sözdizimi kullanarak genellikle daha kolay ve daha küçük bir biçimlendirme sağlar, ancak genellikle adımlarından stili, teknik bir sınırlama olan.If an attribute syntax is possible, using the attribute syntax is typically more convenient and enables a more compact markup, but that is often just a matter of style, not a technical limitation. Aşağıdaki örnek, önceki öznitelik sözdizimi örneği, ancak bu kez olduğu gibi tüm özellikleri için özellik öğesi sözdizimini kullanarak ayarlanan aynı özellikleri gösterir. Button.The following example shows the same properties being set as in the previous attribute syntax example, but this time by using property element syntax for all properties of the Button.

<Button>
  <Button.Background>
    <SolidColorBrush Color="Blue"/>
  </Button.Background>
  <Button.Foreground>
    <SolidColorBrush Color="Red"/>
  </Button.Foreground>
  <Button.Content>
    This is a button
  </Button.Content>
</Button>

Koleksiyon söz dizimiCollection syntax

XAML dil daha okunabilir biçimlendirme oluşturan bazı iyileştirmeler içerir.The XAML language includes some optimizations that produce more human-readable markup. Belirli bir özellik bir koleksiyon türü, ardından biçimlendirme içinde alt öğeleri bu özelliğin değeri haline koleksiyonunun parçası olarak bildirdiğiniz öğeleri uzun sürerse bir iyileştirme olmasıdır.One such optimization is that if a particular property takes a collection type, then items that you declare in markup as child elements within that property's value become part of the collection. Bu durumda alt nesne öğelerinin bir koleksiyonunu koleksiyon özelliği için ayarlanan değerdir.In this case a collection of child object elements is the value being set to the collection property.

Aşağıdaki örnek, değerlerini ayarlamak için koleksiyon söz dizimini gösterir. GradientStops özelliği:The following example shows collection syntax for setting values of the GradientStops property:

<LinearGradientBrush>  
  <LinearGradientBrush.GradientStops>  
    <!-- no explicit new GradientStopCollection, parser knows how to find or create -->  
    <GradientStop Offset="0.0" Color="Red" />  
    <GradientStop Offset="1.0" Color="Blue" />  
  </LinearGradientBrush.GradientStops>  
</LinearGradientBrush>  

XAML İçerik özellikleriXAML content properties

XAML ile bir sınıf özelliklerini XAML içerik özelliği tam olarak birine atayabilirsiniz bir dil özelliği belirtir.XAML specifies a language feature whereby a class can designate exactly one of its properties to be the XAML content property. Bu nesne öğenin alt öğeleri, bu içerik özelliğinin değerini ayarlamak için kullanılır.Child elements of that object element are used to set the value of that content property. Diğer bir deyişle, içerik özelliği için benzersiz olarak, XAML biçimlendirme içinde bu özelliği ayarlanırken bir özellik öğesi çıkarın ve daha görünür bir üst/alt benzetme biçimlendirmede üretmek.In other words, for the content property uniquely, you can omit a property element when setting that property in XAML markup and produce a more visible parent/child metaphor in the markup.

Örneğin, Border bir içerik özelliğine belirtir Child.For example, Border specifies a content property of Child. Aşağıdaki iki Border öğeleri aynı şekilde edilir.The following two Border elements are treated identically. İlk içerik özelliği söz dizimi avantajlarından yararlanır ve atlar Border.Child özellik öğesi.The first one takes advantage of the content property syntax and omits the Border.Child property element. İkincisi gösterir Border.Child açıkça.The second one shows Border.Child explicitly.

<Border>  
  <TextBox Width="300"/>  
</Border>  
<!--explicit equivalent-->  
<Border>  
  <Border.Child>  
    <TextBox Width="300"/>  
  </Border.Child>  
</Border>  

XAML dil bir kural olarak, bir XAML İçerik özelliğinin değerini tamamen önce ya da herhangi bir özellik öğe tamamen sonra söz konusu nesne öğesi üzerinde verilmelidir.As a rule of the XAML language, the value of a XAML content property must be given either entirely before or entirely after any other property elements on that object element. Örneğin, aşağıdaki biçimlendirme için derlenmiyor:For instance, the following markup does not compile:

<Button>I am a   
  <Button.Background>Blue</Button.Background>  
  blue button</Button>  

XAML İçerik özellikleri bu kısıtlama hakkında daha fazla bilgi için bkz: "XAML İçerik Özellikler" bölümünü içinde XAML söz dizimi ayrıntı.For more information about this restriction on XAML content properties, see the "XAML Content Properties" section of XAML Syntax In Detail.

Metin içeriğiText content

XAML öğeleri az sayıda, doğrudan metin içeriklerini işleyebilir.A small number of XAML elements can directly process text as their content. Bunu etkinleştirmek için aşağıdaki durumlardan biri true olması gerekir:To enable this, one of the following cases must be true:

  • Sınıfı bir içerik özelliğinin bildirmeniz gerekir ve bu içerik özelliği bir dizeye atanabilir bir tür olması gerekir (türü olabilir Object).The class must declare a content property, and that content property must be of a type assignable to a string (the type could be Object). Örneğin, herhangi ContentControl kullanan Content içerik özelliği ve bunu türüdür Object, ve bunu aşağıdaki kullanımı bir pratik üzerinde destekler ContentControl gibi bir Button: <Button>Hello</Button>.For instance, any ContentControl uses Content as its content property and it is type Object, and this supports the following usage on a practical ContentControl such as a Button: <Button>Hello</Button>.

  • Türü bir tür dönüştürücüsü metin içeriği çalışması için bu tür dönüştürücüsü başlatma metin olarak kullanılır, bildirmeniz gerekir.The type must declare a type converter, in which case the text content is used as initialization text for that type converter. Örneğin, <Brush>Blue</Brush>.For example, <Brush>Blue</Brush>. Bu uygulamada daha az karşılaşılan bir durumdur.This case is less common in practice.

  • Bilinen bir XAML dil temel türü olmalıdır.The type must be a known XAML language primitive.

Birleşik içerik özellikleri ve koleksiyon söz dizimiContent properties and collection syntax combined

Bu örneği göz önünde bulundurun:Consider this example:

<StackPanel>  
  <Button>First Button</Button>  
  <Button>Second Button</Button>  
</StackPanel>  

Burada, her Button bir alt öğesidir StackPanel.Here, each Button is a child element of StackPanel. İki farklı nedenlerden iki etiket atlar kolay ve sezgisel bir biçimlendirme budur.This is a streamlined and intuitive markup that omits two tags for two different reasons.

<StackPanel>  
  <StackPanel.Children>  
    <!--<UIElementCollection>-->  
    <Button>First Button</Button>  
    <Button>Second Button</Button>  
    <!--</UIElementCollection>-->  
  </StackPanel.Children>  
</StackPanel>  

Öznitelik sözdizimi (olaylar)Attribute syntax (events)

Öznitelik sözdizimi özellikleri yerine olayları olan üyeler için de kullanılabilir.Attribute syntax can also be used for members that are events rather than properties. Bu durumda, özniteliğin adı olay adıdır.In this case, the attribute's name is the name of the event. WPF uygulamasında olaylar XAML için özniteliğin değeri, bu olayın temsilci uygulayan bir işleyici adıdır.In the WPF implementation of events for XAML, the attribute's value is the name of a handler that implements that event's delegate. Örneğin, aşağıdaki biçimlendirme için bir işleyici atar Click olayına bir Button biçimlendirme içinde oluşturulan:For example, the following markup assigns a handler for the Click event to a Button created in markup:

<Page 
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="ExampleNamespace.ExamplePage">
  <Button Click="Button_Click" >Click Me!</Button>
</Page>

Daha fazla olayları ve WPF XAML için yeni öznitelik sözdizimi Bu örnek vardır.There is more to events and XAML in WPF than just this example of the attribute syntax. Örneğin, hangi merak ediyor ClickHandler burada temsil eder ve nasıl tanımlandığını başvurulan.For example, you might wonder what the ClickHandler referenced here represents and how it is defined. Bu yakında açıklanacaktır olayları ve XAML gerideki kod bu konudaki.This will be explained in the upcoming Events and XAML Code-Behind section of this topic.

Durum ve XAML boşlukCase and white space in XAML

XAML genel olarak bakıldığında büyük/küçük harfe duyarlıdır.XAML is generally speaking case sensitive. Yedekleme türleri çözme amacıyla, WPF XAML CLR büyük küçük harfe duyarlı olduğunu kurallarıyla büyük küçük harfe duyarlı.For purposes of resolving backing types, WPF XAML is case sensitive by the same rules that the CLR is case sensitive. Nesne öğeleri, özellik öğe ve öznitelik adları tüm derlemesindeki temel alınan türü veya bir tür üyesi adı ile karşılaştırıldığında önemli büyük/küçük harf kullanılarak belirtilmelidir.Object elements, property elements, and attribute names must all be specified by using the sensitive casing when compared by name to the underlying type in the assembly, or to a member of a type. XAML dil anahtar sözcükleri ve temelleri ayrıca büyük küçük harfe duyarlı değildir.XAML language keywords and primitives are also case sensitive. Değerler her zaman büyük/küçük harfe duyarlı değildir.Values are not always case sensitive. Değerleri büyük/küçük harfe duyarlılık değeri ya da özellik değeri türü alan özellikle ilişkili tür dönüştürücü davranışına bağlı olacaktır.Case sensitivity for values will depend on the type converter behavior associated with the property that takes the value, or the property value type. Örneğin, alan özellikleri Boolean türü ya da alabilir true veya True ancak çünkü dizeye dönüştürme yerel WPF XAML ayrıştırıcı türü yalnızca eşdeğeri değer olarak Boolean eşdeğerleri olarak zaten izin verir.For example, properties that take the Boolean type can take either true or True as equivalent values, but only because the native WPF XAML parser type conversion for string to Boolean already permits these as equivalents.

WPF XAML işlemcisi ve seri hale getiricileri genişletme Yoksay veya tüm önemli olmayan boşluk bırakma ve tüm önemli boşluk Normalleştir.WPF XAML processors and serializers will ignore or drop all nonsignificant white space, and will normalize any significant white space. Bu XAML belirtiminde varsayılan boşluk davranışını önerileri ile tutarlıdır.This is consistent with the default white-space behavior recommendations of the XAML specification. Bu genellikle, davranıştır, XAML İçerik özellikleri içinde dizeleri belirttiğinizde sonucu.This behavior is generally only of consequence when you specify strings within XAML content properties. En basit terimle, XAML alanları boşluk, satır besleme ve sekme karakterlerinden dönüştürür ve ardından bir boşluk, korur, bitişik dize ya da sonunda bulunamadı.In simplest terms, XAML converts space, linefeed and tab characters into spaces, and then preserves one space if found at either end of a contiguous string. Bu konudaki XAML boşluk işleme ilişkin tam açıklama kapsamında değildir.The full explanation of XAML white-space handling is not covered in this topic. Ayrıntılar için bkz XAML içinde işleme boşluk.For details, see White space processing in XAML.

Biçimlendirme uzantılarıMarkup extensions

Biçimlendirme uzantıları, XAML dili kavramdır.Markup extensions are a XAML language concept. Bir öznitelik sözdizimi, küme ayracı değeri sağlamak için kullanıldığında ({ ve }) biçimlendirme uzantısı kullanımı gösterir.When used to provide the value of an attribute syntax, curly braces ({ and }) indicate a markup extension usage. Bu kullanım öznitelik değerleri genel işleme bir, dize veya dize dönüştürülebilir bir değer olarak erişmek için işleme XAML yönlendirir.This usage directs the XAML processing to escape from the general treatment of attribute values as either a literal string or a string-convertible value.

İçinde kullanılan en yaygın biçimlendirme uzantıları WPFWPF uygulama programlama olan bağlama, veri bağlama ifadeleri ve kaynak başvuruları için kullanılan StaticResource ve DynamicResource.The most common markup extensions used in WPFWPF application programming are Binding, used for data binding expressions, and the resource references StaticResource and DynamicResource. Biçimlendirme uzantıları kullanarak, bu özelliği bir öznitelik söz dizimi genel olarak desteklemiyor olsa bile özellikleri değerlerini sağlamak için öznitelik sözdizimini kullanabilirsiniz.By using markup extensions, you can use attribute syntax to provide values for properties even if that property does not support an attribute syntax in general. Biçimlendirme uzantıları, ara ifade türleri genellikle değerleri erteleniyor veya yalnızca çalışma zamanında mevcut olan diğer nesnelere başvurma gibi özellikleri etkinleştirmek için kullanın.Markup extensions often use intermediate expression types to enable features such as deferring values or referencing other objects that are only present at run time.

Örneğin, aşağıdaki biçimlendirme değerini ayarlar Style öznitelik sözdizimi kullanan özellik.For example, the following markup sets the value of the Style property using attribute syntax. Style Özelliği bir örneğini alır Style varsayılan olarak bir öznitelik söz dizimi dizesiyle örneklenemedi sınıfı.The Style property takes an instance of the Style class, which by default could not be instantiated by an attribute syntax string. Ancak bu durumda, öznitelik bir belirli işaretleme uzantısı başvuruları StaticResource.But in this case, the attribute references a particular markup extension, StaticResource. Bu işaretleme uzantısı işlenirken, daha önce bir kaynak sözlüğünde anahtarlı bir kaynak olarak örneklenmiş bir stil bir başvuru döndürür.When that markup extension is processed, it returns a reference to a style that was previously instantiated as a keyed resource in a resource dictionary.

<Page.Resources>
  <SolidColorBrush x:Key="MyBrush" Color="Gold"/>
  <Style TargetType="Border" x:Key="PageBackground">
    <Setter Property="Background" Value="Blue"/>
  </Style>
</Page.Resources>
<StackPanel>
  <Border Style="{StaticResource PageBackground}">
  </Border>
</StackPanel>

Özellikle WPF'de XAML uygulanan için bir başvuru tüm biçimlendirme uzantılarını listelemek için bkz: WPF XAML uzantıları.For a reference listing of all markup extensions for XAML implemented specifically in WPF, see WPF XAML Extensions. System.Xaml ve .NET Framework XAML uygulamaları için daha yaygın olarak kullanılabilir tarafından tanımlanan biçimlendirme uzantıları başvuru listesi için bkz. XAML Namespace (x:) Dil özellikleri.For a reference listing of the markup extensions that are defined by System.Xaml and are more widely available for .NET Framework XAML implementations, see XAML Namespace (x:) Language Features. Biçimlendirme uzantısı kavramları hakkında daha fazla bilgi için bkz: biçimlendirme uzantıları ve WPF XAML.For more information about markup extension concepts, see Markup Extensions and WPF XAML.

Tür dönüştürücüleriType converters

İçinde XAML söz dizimi kısaca bölümünde, öznitelik değeri bir dize tarafından ayarlanabilir belirtilmiştir.In the XAML Syntax in Brief section, it was stated that the attribute value must be able to be set by a string. Diğer nesne türleri veya İlkel değer dizeleri nasıl dönüştürülür, temel, yerel işleme dayalı String kendisini yazın, ayrıca yerel bazı işleme türleri gibi DateTime veya Uri.The basic, native handling of how strings are converted into other object types or primitive values is based on the String type itself, in addition to native processing for certain types such as DateTime or Uri. Ancak birçok WPFWPF türleri ya da bu türlerin üyelerini genişletmek davranışı, daha karmaşık nesne türlerini örneklerini dizeleri ve öznitelikleri belirtilebilir şekilde işlemeyi temel dize özniteliği.But many WPFWPF types or members of those types extend the basic string attribute processing behavior, in such a way that instances of more complex object types can be specified as strings and attributes.

Thickness Yapısı için XAML kullanımları etkin bir tür dönüştürmesi olan bir türü bir örnektir.The Thickness structure is an example of a type that has a type conversion enabled for XAML usages. Thickness iç içe geçmiş bir dikdörtgen içindeki ölçüleri gösterir ve değeri olarak gibi özellikler için kullanılan Margin.Thickness indicates measurements within a nested rectangle and is used as the value for properties such as Margin. Bir tür dönüştürücüsü yerleştirerek tarafından Thickness, kullanan tüm özellikleri bir Thickness öznitelik olarak belirtilen XAML içinde belirtmeniz daha kolaydır.By placing a type converter on Thickness, all properties that use a Thickness are easier to specify in XAML because they can be specified as attributes. Aşağıdaki örnek, bir değer sağlamak için bir tür dönüştürme ve öznitelik sözdizimi kullanır. bir Margin:The following example uses a type conversion and attribute syntax to provide a value for a Margin:

<Button Margin="10,20,10,30" Content="Click me"/>

Önceki öznitelik sözdizimi örneği aşağıdakine eşdeğerdir daha ayrıntılı sözdizimi örneği burada Margin bunun yerine özellik öğesi sözdizimi içeren aracılığıyla ayarlanan bir Thickness nesne öğesi.The previous attribute syntax example is equivalent to the following more verbose syntax example, where the Margin is instead set through property element syntax containing a Thickness object element. Dört anahtar özelliklerini Thickness öznitelik olarak yeni örnek üzerinde ayarlanır:The four key properties of Thickness are set as attributes on the new instance:

<Button Content="Click me">
  <Button.Margin>
    <Thickness Left="10" Top="20" Right="10" Bottom="30"/>
  </Button.Margin>
</Button>

Not

Sınırlı sayıda tür dönüştürme türü varsayılan bir oluşturucuya sahip olmadığı için özellik bu tür için bir alt karıştırılmaksızın ayarlamak için tek genel yol olduğu nesnelerin vardır.There are also a limited number of objects where the type conversion is the only public way to set a property to that type without involving a subclass, because the type itself does not have a default constructor. Bir örnek Cursor.An example is Cursor.

Söz dizimi desteklenir tür dönüştürme ve uygunsa kullanımını nasıl özniteliği hakkında daha fazla bilgi için bkz: TypeConverters ve XAML.For more information on how type conversion and its use for attribute syntax is supported, see TypeConverters and XAML.

XAML kök öğe ve XAML ad alanlarıXAML root elements and XAML namespaces

Bir XAML dosyası her iki bir doğru biçimlendirilmemiş için yalnızca bir kök öğe olmalıdır XMLXML dosya ve geçerli bir XAML dosyası.A XAML file must have only one root element, in order to be both a well-formed XMLXML file and a valid XAML file. WPF uygulama modeli tanınmış bir anlamı bir kök öğe kullandığınız tipik WPF senaryoları için (örneğin, Window veya Page bir sayfa için ResourceDictionary için dış bir sözlük veya Application uygulama tanımı için).For typical WPF scenarios, you use a root element that has a prominent meaning in the WPF application model (for example, Window or Page for a page, ResourceDictionary for an external dictionary, or Application for the application definition). Aşağıdaki örnek, kök öğesi için tipik bir XAML dosyasını gösterir. bir WPFWPF sayfasıyla kök öğesi Page.The following example shows the root element of a typical XAML file for a WPFWPF page, with the root element of Page.

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
</Page>

Kök öğe özniteliklerini de içeren xmlns ve xmlns:x.The root element also contains the attributes xmlns and xmlns:x. Bu öznitelikler için XAML ad alanları, yedekleme öğeleri olarak işaretleme Bakacağınız türler için tür tanımları içeren bir XAML işlemcisi belirtin.These attributes indicate to a XAML processor which XAML namespaces contain the type definitions for backing types that the markup will reference as elements. xmlns Öznitelik özellikle varsayılan XAML ad alanı gösterir.The xmlns attribute specifically indicates the default XAML namespace. Varsayılan XAML ad alanı içinde bir ön eki nesne öğeleri biçimlendirmede belirtilebilir.Within the default XAML namespace, object elements in the markup can be specified without a prefix. Çoğu WPFWPF uygulama senaryoları ve neredeyse tüm verilen örneklerin WPFWPF bölümlerini SDKSDK, varsayılan XAML ad alanı için eşlenmiş WPFWPF ad alanı http://schemas.microsoft.com/winfx/2006/xaml/presentationhttp://schemas.microsoft.com/winfx/2006/xaml/presentation.For most WPFWPF application scenarios, and for almost all of the examples given in the WPFWPF sections of the SDKSDK, the default XAML namespace is mapped to the WPFWPF namespace http://schemas.microsoft.com/winfx/2006/xaml/presentationhttp://schemas.microsoft.com/winfx/2006/xaml/presentation. xmlns:x XAML dil ad alanı eşleyen bir ek XAML ad alanı özniteliği gösterir http://schemas.microsoft.com/winfx/2006/xamlhttp://schemas.microsoft.com/winfx/2006/xaml.The xmlns:x attribute indicates an additional XAML namespace, which maps the XAML language namespace http://schemas.microsoft.com/winfx/2006/xamlhttp://schemas.microsoft.com/winfx/2006/xaml.

Bu kullanımı xmlns kullanımı ve bir namescope eşlemesi için bir kapsam tanımlamak için XML 1.0 belirtimi ile tutarlıdır.This usage of xmlns to define a scope for usage and mapping of a namescope is consistent with the XML 1.0 specification. Yalnızca XAML namescope ayrıca tür çözümlemesi ve XAML ayrıştırma geldiğinde namescope'nın öğe türlerine göre nasıl yedeklenir ilgili bir sorun olduğu anlamına gelir, XAML ad kapsamları XML ad kapsamları farklıdır.XAML namescopes are different from XML namescopes only in that a XAML namescope also implies something about how the namescope's elements are backed by types when it comes to type resolution and parsing the XAML.

Unutmayın xmlns öznitelikleri her XAML dosyasının kök öğede duyulandan yalnızca.Note that the xmlns attributes are only strictly necessary on the root element of each XAML file. xmlns tanımlamalar kök öğenin tüm alt öğeleri için geçerlidir (Bu davranışı için XML 1.0 belirtimi ile yeniden tutarlıdır xmlns.) xmlns öznitelikler de diğer öğeleri kök altında izin verilir ve tanımlama öğenin tüm alt öğelerine uygulanacak.xmlns definitions will apply to all descendant elements of the root element (this behavior is again consistent with the XML 1.0 specification for xmlns.) xmlns attributes are also permitted on other elements underneath the root, and would apply to any descendant elements of the defining element. Ancak, sık sık tanımı veya XAML ad alanları yeniden tanımlama okunması zor olan bir XAML biçimlendirme stili neden olabilir.However, frequent definition or redefinition of XAML namespaces can result in a XAML markup style that is difficult to read.

WPFWPF WPF core derleme tanıma sahip bir altyapı XAML işlemcisinin uygulaması içerir.The WPFWPF implementation of its XAML processor includes an infrastructure that has awareness of the WPF core assemblies. WPFWPF Destekleyen türleri içeren için çekirdek derlemeler bilinir WPFWPF varsayılan XAML ad alanı eşlemeleri.The WPFWPF core assemblies are known to contain the types that support the WPFWPF mappings to the default XAML namespace. Bu proje yapınızın bir parçası olan yapılandırma etkin dosya ve WPF, yapı ve proje sistemleri.This is enabled through configuration that is part of your project build file and the WPF build and project systems. Bu nedenle, varsayılan olarak varsayılan XAML ad alanı bildirme xmlns gelen XAML öğeleri başvurmak için gerekli olan tüm WPFWPF derlemeler.Therefore, declaring the default XAML namespace as the default xmlns is all that is necessary in order to reference XAML elements that come from WPFWPF assemblies.

X: ön ekiThe x: prefix

Önceki örnekte kök öğesi, ön eki x: XAML ad alanı eşlemek için kullanılan http://schemas.microsoft.com/winfx/2006/xamlhttp://schemas.microsoft.com/winfx/2006/xaml, XAML dili destekleyen özel XAML ad alanı olan oluşturur.In the previous root element example, the prefix x: was used to map the XAML namespace http://schemas.microsoft.com/winfx/2006/xamlhttp://schemas.microsoft.com/winfx/2006/xaml, which is the dedicated XAML namespace that supports XAML language constructs. Bu x: ön eki bu XAML ad alanı için proje şablonları, örnekler ve belge boyunca bu eşleme için kullanılan SDKSDK.This x: prefix is used for mapping this XAML namespace in the templates for projects, in examples, and in documentation throughout this SDKSDK. XAML dili için XAML ad alanı, XAML içinde çok sık kullanacağınız çeşitli programlama yapıları içerir.The XAML namespace for the XAML language contain several programming constructs that you will use very frequently in your XAML. En yaygın bir listesi verilmiştir x: kullanacağınız programlama yapıları öneki:The following is a listing of the most common x: prefix programming constructs you will use:

  • x: Key: her bir kaynak için benzersiz bir anahtar ayarlar bir ResourceDictionary (veya diğer çerçeveler benzer sözlük kavramları).x:Key: Sets a unique key for each resource in a ResourceDictionary (or similar dictionary concepts in other frameworks). x:Key % 90'ını hesabı görür x: kullanımları bir tipik WPF uygulama biçimlendirme içinde görürsünüz.x:Key will probably account for 90% of the x: usages you will see in a typical WPF application's markup.

  • x: Class: belirtir CLRCLR ad alanını ve sınıf adı için bir XAML sayfası için arka plan kod sağlayan sınıf.x:Class: Specifies the CLRCLR namespace and class name for the class that provides code-behind for a XAML page. Arka plan kod WPF programlama modeli başına desteklemek için sınıf olması ve bu nedenle, neredeyse her zaman görmek x: kaynak olsa bile, eşlenmiş.You must have such a class to support code-behind per the WPF programming model, and therefore you almost always see x: mapped, even if there are no resources.

  • x: Name: bir nesne öğesi işlendikten sonra çalışma zamanı kodu mevcut örneği için bir çalışma zamanı nesne adı belirtir.x:Name: Specifies a run-time object name for the instance that exists in run-time code after an object element is processed. Genel olarak, bir WPF tanımlı eşdeğer özelliği sık kullanacağınız x: Name.In general, you will frequently use a WPF-defined equivalent property for x:Name. Gibi özellikleri özelliği yedekleyen bir CLR özel eşleme ve bu nedenle, sık sık çalışma zamanında kodu başlatılmış XAML adlandırılmış öğeleri bulmak için kullandığınız uygulama programlaması için daha kolay.Such properties map specifically to a CLR backing property and are thus more convenient for application programming, where you frequently use run time code to find the named elements from initialized XAML. En yaygın tür özelliği FrameworkElement.Name.The most common such property is FrameworkElement.Name. Yine de kullanabilir x: Name olduğunda eşdeğer WPF çerçeve düzeyi Name özelliği, belirli bir türü desteklenmiyor.You might still use x:Name when the equivalent WPF framework-level Name property is not supported in a particular type. Bu, bazı animasyon senaryolarda oluşur.This occurs in certain animation scenarios.

  • x: Static: XAML ile uyumlu özelliği aksi değil statik bir değer döndüren bir başvuru sağlar.x:Static: Enables a reference that returns a static value that is not otherwise a XAML-compatible property.

  • x: Type: oluşturan bir Type başvuru bir tür adına bağlı.x:Type: Constructs a Type reference based on a type name. Bu öznitelikler belirtmek için kullanılan Type, gibi Style.TargetType, sık özelliği yerel dize olsa-için-Type şekilde dönüştürme, x: Type biçimlendirme uzantısı kullanımı İsteğe bağlı.This is used to specify attributes that take Type, such as Style.TargetType, although frequently the property has native string-to-Type conversion in such a way that the x:Type markup extension usage is optional.

Vardır yapılardan programlama ek x: gibi ortak olmayan ön eki/XAML ad alanı.There are additional programming constructs in the x: prefix/XAML namespace, which are not as common. Ayrıntılar için bkz XAML Namespace (x:) Dil özellikleri.For details, see XAML Namespace (x:) Language Features.

Özel ön ekleri ve XAML özel türleriCustom prefixes and custom types in XAML

Kendi özel derlemeler için ya da WPF çekirdek PresentationCore, PresentationFramework ve WindowsBase dışında derlemeler için derleme özel bir parçası olarak belirtebilirsiniz xmlns eşleme.For your own custom assemblies, or for assemblies outside the WPF core of PresentationCore, PresentationFramework and WindowsBase, you can specify the assembly as part of a custom xmlns mapping. Bu tür çalışıyorsunuz. XAML kullanımları desteklemek için doğru bir şekilde uygulandığından sürece, XAML içinde bu derleme türleri ardından başvurabilirsiniz.You can then reference types from that assembly in your XAML, so long as that type is correctly implemented to support the XAML usages you are attempting.

XAML biçimlendirmede nasıl özel önekleri çalışmanın çok basit bir örneği verilmiştir.The following is a very basic example of how custom prefixes work in XAML markup. Önek custom kök öğe etiketinde tanımlanır ve paketlenmiş ve uygulama ile birlikte kullanılabilir olduğu belirli bir derleme eşlenir.The prefix custom is defined in the root element tag, and mapped to a specific assembly that is packaged and available with the application. Bu derlemeyi bir tür içeren NumericUpDown, genel XAML kullanım yanı sıra bir WPF XAML içerik modelinde belirli bu noktada, ekleme izin veren bir sınıf devralma kullanarak desteklemek için uygulanır.This assembly contains a type NumericUpDown, which is implemented to support general XAML usage as well as using a class inheritance that permits its insertion at this particular point in a WPF XAML content model. Bu örneği NumericUpDown denetimi, bir nesne öğesi olarak bildirilir, XAML ayrıştırıcı hangi XAML bilebilmesi önekini kullanarak ad alanı türü içerir ve bu nedenle burada yedekleme derleme, tür tanımını içeren.An instance of this NumericUpDown control is declared as an object element, using the prefix so that a XAML parser knows which XAML namespace contains the type, and therefore where the backing assembly is that contains the type definition.

<Page  
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   
    xmlns:custom="clr-namespace:NumericUpDownCustomControl;assembly=CustomLibrary"  
    >  
  <StackPanel Name="LayoutRoot">  
    <custom:NumericUpDown Name="numericCtrl1" Width="100" Height="60"/>  
...  
  </StackPanel>  
</Page>  

XAML özel türleri hakkında daha fazla bilgi için bkz: XAML ve özel sınıflar için WPF.For more information about custom types in XAML, see XAML and Custom Classes for WPF.

XML ad alanları ve ad alanlarını derlemelerde yedekleme kodunun nasıl ilişkili olduğunu hakkında daha fazla bilgi için bkz. XAML ad alanları ve WPF XAML Namespace eşleme.For more information about how XML namespaces and the namespaces of the backing code in assemblies are related, see XAML Namespaces and Namespace Mapping for WPF XAML.

Olayları ve XAML kodu arka planEvents and XAML code-behind

Çoğu WPFWPF uygulamaları hem XAML biçimlendirme ve arka plan kod oluşur.Most WPFWPF applications consist of both XAML markup and code-behind. Bir proje içinde XAML olarak yazılmış bir .xaml dosyası ve bir CLRCLR dil Microsoft Visual Basic veya C# gibi bir arka plan kod dosyası yazmak için kullanılır.Within a project, the XAML is written as a .xaml file, and a CLRCLR language such as Microsoft Visual Basic or C# is used to write a code-behind file. Bir XAML dosyası WPF programlama ve uygulama modelleri bir parçası olarak biçimlendirme derlenirken, XAML kodu arka plan konumunu bir XAML dosyasını bir ad belirterek tanımlanan dosya ve sınıf olarak x:Class XAML kök öğesinin özniteliği.When a XAML file is markup compiled as part of the WPF programming and application models, the location of the XAML code-behind file for a XAML file is identified by specifying a namespace and class as the x:Class attribute of the root element of the XAML.

Örneklerde şu ana kadar çeşitli düğmeler gördünüz, ancak bu düğmeler hiçbiri henüz ilişkili herhangi bir mantıksal davranış vardı.In the examples so far, you have seen several buttons, but none of these buttons had any logical behavior associated with them yet. Bir nesne öğesi için bir davranış eklemek için birincil uygulama düzeyinde öğe sınıfın var olan bir olayı kullanın ve çalışma zamanında bu olay ortaya çıktığında çağrılan bu olay için belirli bir işleyici yazılacak mekanizmadır.The primary application-level mechanism for adding a behavior for an object element is to use an existing event of the element class, and to write a specific handler for that event that is invoked when that event is raised at run time. İşleyicinizi uygulayan kod, arka plan kod içinde tanımlanır ancak olay adını ve kullanılacak işleyicisi adı biçimlendirme içinde belirtilir.The event name and the name of the handler to use are specified in the markup, whereas the code that implements your handler is defined in the code-behind.

<Page 
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="ExampleNamespace.ExamplePage">
  <Button Click="Button_Click" >Click Me!</Button>
</Page>
namespace ExampleNamespace
{
  public partial class ExamplePage
  {
    void Button_Click(object sender, RoutedEventArgs e)
    {
      Button b = e.Source as Button;
      b.Foreground = Brushes.Red;
    }
  }
}
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
    Dim b As Button = e.Source
    b.Foreground = Brushes.Red
End Sub

Arka plan kod dosyası CLR ad alanını kullandığından emin olun ExampleNamespace ve bildirir ExamplePage olarak bu ad alanı içinde kısmi bir sınıf.Notice that the code-behind file uses the CLR namespace ExampleNamespace and declares ExamplePage as a partial class within that namespace. Bu parallels x:Class öznitelik değerini ExampleNamespace.ExamplePageThis parallels the x:Class attribute value of ExampleNamespace.ExamplePage Bu işaretleme kök dizininde sağlanmadı.that was provided in the markup root. Kök öğesi türünden bir sınıf türetilerek WPF biçimlendirmesi derleyici herhangi derlenmiş XAML dosyası için bir parçalı sınıf oluşturun.The WPF markup compiler will create a partial class for any compiled XAML file, by deriving a class from the root element type. Ayrıca aynı kısmi sınıf tanımlar gerideki sağladığınızda, sonuç kodunu aynı ad alanını ve sınıf derlenmiş uygulamanın içinde birleştirilir.When you provide code-behind that also defines the same partial class, the resulting code is combined within the same namespace and class of the compiled application.

Arka plan kod programlama ' WPF'de gereksinimleri hakkında daha fazla bilgi için "arka plan kod, olay işleyicisi ve kısmi sınıf gereksinimleri" bölümüne bakın. arka plan kod ve WPF XAML.For more information about requirements for code-behind programming in WPF, see the "Code-behind, Event Handler, and Partial Class Requirements" section of Code-Behind and XAML in WPF.

Ayrı arka plan kod dosyası oluşturmak istemiyorsanız, satır içi kodunuzu bir XAML dosyasında da kullanabilirsiniz.If you do not want to create a separate code-behind file, you can also inline your code in a XAML file. Ancak, önemli sınırlamalar daha az verimli bir yöntem satır içi kodudur.However, inline code is a less versatile technique that has substantial limitations. Ayrıntılar için bkz arka plan kod ve WPF XAML.For details, see Code-Behind and XAML in WPF.

Yönlendirilmiş olaylarRouted events

Belirli bir olay özelliği için temel WPFWPF yönlendirilmiş bir olaydır.A particular event feature that is fundamental to WPFWPF is a routed event. Olayları etkinleştir öğeleri arasında ağacı ilişki bağlı olduğu sürece farklı bir öğe tarafından başlatılan bir olayı işlemek için bir öğe yönlendirilir.Routed events enable an element to handle an event that was raised by a different element, as long as the elements are connected through a tree relationship. Olay işleme XAML özniteliği ile belirtirken, yönlendirilmiş olay için dinledik ve bu belirli olay sınıfı üyeleri tablosunda listelemez öğeleri dahil olmak üzere herhangi bir öğedeki işlenmiş.When specifying event handling with a XAML attribute, the routed event can be listened for and handled on any element, including elements that do not list that particular event in the class members table. Bu olay ad özniteliği, sahip olan sınıf adıyla uygun olarak gerçekleştirilir.This is accomplished by qualifying the event name attribute with the owning class name. Örneğin, üst StackPanel sürekli olarak StackPanel / Button örnek bir alt öğe düğmenin işleyicisi kaydetmek Click öznitelik belirterek olay Button.Click üzerinde StackPanel öznitelik değeri olarak işleyici adınızla nesne öğesi.For instance, the parent StackPanel in the ongoing StackPanel / Button example could register a handler for the child element button's Click event by specifying the attribute Button.Click on the StackPanel object element, with your handler name as the attribute value. Nasıl yönlendirilmiş olaylar çalışma hakkında daha fazla bilgi için bkz: yönlendirilmiş olaylara genel bakış.For more information about how routed events work, see Routed Events Overview.

XAML öğeleri adlıXAML named elements

Varsayılan olarak, benzersiz bir kimlik veya nesne başvurusu bir nesne grafında XAML nesne öğesi işleme tarafından oluşturulan nesne örneği sahip değil.By default, the object instance that is created in an object graph by processing a XAML object element does not possess a unique identifier or object reference. Kod Oluşturucusunu, örnek daha sonra kodunuzda başvurabilir, böylece buna karşılık, neredeyse her zaman Oluşturucu sonuç için oluşturulan örnek, bir değişken ayarlamak için kullanın.In contrast, if you call a constructor in code, you almost always use the constructor result to set a variable to the constructed instance, so that you can reference the instance later in your code. XAML işaretleme tanımıyla oluşturulan nesneler için standartlaştırılmış bir erişim sağlamak için tanımlar x: Name özniteliği.In order to provide standardized access to objects that were created through a markup definition, XAML defines the x:Name attribute. Değerini ayarlayabilirsiniz x:Name herhangi bir nesne öğesi özniteliği.You can set the value of the x:Name attribute on any object element. Arka plan kod içinde seçtiğiniz tanımlayıcısı için oluşturulan örnek başvuran bir örnek değişkeni eşdeğerdir.In your code-behind, the identifier you choose is equivalent to an instance variable that refers to the constructed instance. Tüm açılardan nesne örnekleri (adı, bu örneğe başvuran) olmadıklarını ve adlandırılmış öğeleri çalışma zamanı etkileşimleri uygulama içinde işlemek için arka plan kod başvurabilirsiniz yokmuş gibi öğeleri işlevi adı.In all respects, named elements function as if they were object instances (the name references that instance), and your code-behind can reference the named elements to handle run-time interactions within the application. Örnekleri değişkenleri arasındaki bu bağlantı, WPF XAML biçimlendirme derleyici tarafından gerçekleştirilir ve daha fazla özel özellikler ve desenleri gibi ilgili InitializeComponent , açıklanmayan bu konudaki ayrıntılı.This connection between instances and variables is accomplished by the WPF XAML markup compiler, and more specifically involve features and patterns such as InitializeComponent that will not be discussed in detail in this topic.

WPF çerçeve düzeyi XAML öğeleri devralınan bir Name tanımlanan XAML eşdeğer olan özellik x:Name özniteliği.WPF framework-level XAML elements inherit a Name property, which is equivalent to the XAML defined x:Name attribute. Belirli diğer sınıflar için özellik düzeyi eşdeğerleri de sağlar. x:Name, ayrıca genel olarak tanımlanan olarak bir Name özelliği.Certain other classes also provide property-level equivalents for x:Name, which is also generally defined as a Name property. Bulamazsanız, genellikle, konuşma bir Name seçilen öğe/türünüzü kullanmak için Üyeler tablosunda özelliğinde x:Name yerine.Generally speaking, if you cannot find a Name property in the members table for your chosen element/type, use x:Name instead. x:Name Değerleri çalışma zamanında belirli alt sistemler veya yardımcı program yöntemleri gibi kullanılabilecek bir XAML öğesi için bir tanımlayıcı sağlar FindName.The x:Name values will provide an identifier to a XAML element that can be used at run time, either by specific subsystems or by utility methods such as FindName.

Aşağıdaki örnek kümeleri Name üzerinde bir StackPanel öğesi.The following example sets Name on a StackPanel element. Ardından, bir işleyici bir Button içindeki StackPanel başvuruları StackPanel kendi örneği başvuru aracılığıyla buttonContainer tarafından ayarlanmış Name.Then, a handler on a Button within that StackPanel references the StackPanel through its instance reference buttonContainer as set by Name.

<StackPanel Name="buttonContainer">
  <Button Click="RemoveThis">Click to remove this button</Button>
</StackPanel>
void RemoveThis(object sender, RoutedEventArgs e)
{
    FrameworkElement fe = e.Source as FrameworkElement;
    if (buttonContainer.Children.Contains(fe))
    {
        buttonContainer.Children.Remove(fe);
    }
}
 Private Sub RemoveThis(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
     Dim fe As FrameworkElement = e.Source
     If (buttonContainer.Children.Contains(fe)) Then
         buttonContainer.Children.Remove(fe)
     End If
End Sub

Böylece adları, tahmin edilebilir olan belirli bir kapsama içinde benzersiz olması zorunlu tutulabilir bir değişken gibi yalnızca bir örneği için XAML ad kapsamı, bir kavramı tarafından yönetilir.Just like a variable, the XAML name for an instance is governed by a concept of scope, so that names can be enforced to be unique within a certain scope that is predictable. Bir sayfa tanımlayan birincil biçimlendirme XAML namescope sınır o sayfanın kök öğe olan benzersiz bir XAML namescope gösterir.The primary markup that defines a page denotes one unique XAML namescope, with the XAML namescope boundary being the root element of that page. Ancak, diğer biçimlendirme kaynakları stiller veya şablonlar stiller içinde gibi çalışma zamanında bir sayfa ile etkileşim kurabilir ve biçimlendirme gibi kaynakları, genellikle mutlaka sayfanın XAML namescope ile bağlamayın kendi XAML ad kapsamları sahiptir.However, other markup sources can interact with a page at run time, such as styles or templates within styles, and such markup sources often have their own XAML namescopes that do not necessarily connect with the XAML namescope of the page. Daha fazla bilgi için x:Name ve XAML ad kapsamları, Name, x: Name yönergesi, veya WPF XAML ad kapsamları.For more information on x:Name and XAML namescopes, see Name, x:Name Directive, or WPF XAML Namescopes.

Ekli özellikler ve ekli olaylarAttached properties and attached events

XAML belirli özellikler veya herhangi bir öğede bir özellik veya olay üzerinde ayarlanmış öğesi türü tanımlarında var olup bağımsız olarak, belirtilen olayları sağlayan bir dil özelliği belirtir.XAML specifies a language feature that enables certain properties or events to be specified on any element, regardless of whether the property or event exists in the type's definitions for the element it is being set on. Bu özellik özellikleri sürümünün ekli özelliği adı, olayları sürüm ekli olay çağrılır.The properties version of this feature is called an attached property, the events version is called an attached event. Kavramsal olarak, tüm XAML öğesi/Pro instanci objektu ayarlanabilir genel üyeleri olarak ekli özellikler ve ekli olaylar düşünebilirsiniz.Conceptually, you can think of attached properties and attached events as global members that can be set on any XAML element/object instance. Ancak, bu öğe/sınıfı ya da daha büyük bir altyapısı yedekleme özelliği deposu ekli değerlerini desteklemesi gerekir.However, that element/class or a larger infrastructure must support a backing property store for the attached values.

XAML içinde ekli özellikler genellikle öznitelik söz dizimi aracılığıyla kullanılır.Attached properties in XAML are typically used through attribute syntax. Nitelik söz dizimindeki ekli özelliği biçiminde belirtin ownerType. propertyName.In attribute syntax, you specify an attached property in the form ownerType.propertyName.

Yüzeysel olarak, bu özellik öğesi kullanımı benzer, ancak bu durumda ownerType belirtin, her zaman farklı bir nesne öğesi tür ekli özellik nerede ayarlanır.Superficially, this resembles a property element usage, but in this case the ownerType you specify is always a different type than the object element where the attached property is being set. ownerType ekli özellik değerini alma veya ayarlama yapmak için XAML işlemcisi tarafından gerekli erişimci metotlarını sağlayan tür.ownerType is the type that provides the accessor methods that are required by a XAML processor in order to get or set the attached property value.

İliştirilmiş özellikler için en yaygın senaryo için kendi üst öğesi bir özellik değeri bildirmek alt öğeleri etkinleştirmektir.The most common scenario for attached properties is to enable child elements to report a property value to their parent element.

Aşağıdaki örnekte gösterilmiştir DockPanel.Dock ekli özellik.The following example illustrates the DockPanel.Dock attached property. DockPanel Sınıfı tanımlar için erişimciler DockPanel.Dock ve bu nedenle ekli özellik.The DockPanel class defines the accessors for DockPanel.Dock and therefore owns the attached property. DockPanel Sınıfı da onun alt öğeleri yinelenir ve her öğe için bir değerini özellikle denetler mantığı içerir DockPanel.Dock.The DockPanel class also includes logic that iterates its child elements and specifically checks each element for a set value of DockPanel.Dock. Bir değeri bulunamazsa, bu değer alt öğeleri konumlandırmak için Düzen sırasında kullanılır.If a value is found, that value is used during layout to position the child elements. Kullanım DockPanel.Dock ekli özellik konumlandırma bu özelliği olduğundan, aslında motive edici temel senaryo için DockPanel sınıfı.Use of the DockPanel.Dock attached property and this positioning capability is in fact the motivating scenario for the DockPanel class.

<DockPanel>
  <Button DockPanel.Dock="Left" Width="100" Height="20">I am on the left</Button>
  <Button DockPanel.Dock="Right" Width="100" Height="20">I am on the right</Button>
</DockPanel>

İçinde WPFWPF, çoğu veya tamamı iliştirilmiş özellikler de bağımlılık özellikleri uygulanır.In WPFWPF, most or all the attached properties are also implemented as dependency properties. Ayrıntılar için bkz ekli özelliklere genel bakış.For details, see Attached Properties Overview.

Ekli olaylar kullanmak benzer ownerType. eventName öznitelik söz dizimi biçimi.Attached events use a similar ownerType.eventName form of attribute syntax. Yalnızca bağlı olmayan olaylar gibi öznitelik değeri XAML içinde ekli bir olay için olay öğede ele alındığında çağrılan işleyici yönteminin adı belirtir.Just like the non-attached events, the attribute value for an attached event in XAML specifies the name of the handler method that is invoked when the event is handled on the element. WPF XAML içinde ekli olay kullanımları daha az yaygındır.Attached event usages in WPF XAML are less common. Daha fazla bilgi için iliştirilmiş olaylara genel bakış.For more information, see Attached Events Overview.

Taban türleri ve XAMLBase types and XAML

Temel alınan WPF XAML ve XAML ad alanı, karşılık gelen türler koleksiyonudur CLRCLR nesnelerin XAML için işaretleme öğeleri yanı sıra.Underlying WPF XAML and its XAML namespace is a collection of types that correspond to CLRCLR objects in addition to markup elements for XAML. Ancak, tüm sınıflar öğelerine eşlenebilir.However, not all classes can be mapped to elements. Soyut sınıflar, gibi ButtonBase, ve belirli soyut olmayan temel sınıflar devralma için kullanılan CLRCLR nesne modeli.Abstract classes, such as ButtonBase, and certain nonabstract base classes are used for inheritance in the CLRCLR objects model. Üyeleri somut XAML öğelerin her biri, hiyerarşideki bazı temel sınıftan devraldığı için temel sınıf, soyut olanlar da dahil olmak üzere XAML geliştirme için yine de önemlidir.Base classes, including abstract ones, are still important to XAML development because each of the concrete XAML elements inherits members from some base class in its hierarchy. Genellikle bu üyeler öznitelik olarak öğe üzerinde ayarlanabilir özellikleri veya işlenebilir olayları içerir.Often these members include properties that can be set as attributes on the element, or events that can be handled. FrameworkElement somut temeli UIUI sınıfının WPFWPF WPF framework düzeyinde.FrameworkElement is the concrete base UIUI class of WPFWPF at the WPF framework level. Tasarlarken UIUIkullanacağınız çeşitli şekli, paneli, dekoratör veya denetim sınıfları, tüm türetilen FrameworkElement.When designing UIUI, you will use various shape, panel, decorator, or control classes, which all derive from FrameworkElement. İlgili bir temel sınıf FrameworkContentElement, iyi bir akış düzeni sunum için belge yönelimli ve iş öğeleri destekler kullanarak API'lerAPIs kasıtlı olarak yansıtan API'lerAPIs içinde FrameworkElement.A related base class, FrameworkContentElement, supports document-oriented elements that work well for a flow layout presentation, using API'lerAPIs that deliberately mirror the API'lerAPIs in FrameworkElement. Öğe düzeyinde öznitelikler birleşimi ve CLRCLR nesne modeli ile belirli bir XAML öğesini ve kendi temel türü ne olursa olsun en somut XAML öğeleri üzerinde ayarlanabilir ortak özellikler kümesi, sağlar.The combination of attributes at the element level and a CLRCLR object model provides you with a set of common properties that are settable on most concrete XAML elements, regardless of the specific XAML element and its underlying type.

XAML güvenlikXAML security

XAML doğrudan nesne örneklemesini ve yürütme temsil eden bir biçimlendirme dilidir.XAML is a markup language that directly represents object instantiation and execution. Bu nedenle, XAML içinde oluşturulan öğeler aynı oluşturulan eşdeğer olarak ile sistem kaynakları (ağ erişimi, dosya sistemi g/ç örnek) etkileşim olanağı sahip kodu yapar.Therefore, elements created in XAML have the same ability to interact with system resources (network access, file system IO, for example) as the equivalent generated code does.

WPFWPF destekleyen .NET Framework 4.NET Framework 4 güvenlik çerçevesi Kod Erişimi Güvenliği (CAS)Code Access Security (CAS). supports the .NET Framework 4.NET Framework 4 security framework Kod Erişimi Güvenliği (CAS)Code Access Security (CAS). Diğer bir deyişle WPFWPF Internet bölgesinde çalışan içeriği yürütme izinleri azaltıldı.This means that WPFWPF content running in the internet zone has reduced execution permissions. "Kaybetmiş XAML" (derlenmemiş XAML sayfaları yorumlanan yükleme zamanında bir XAML Görüntüleyicisi) ve XAML tarayıcısı uygulaması (XBAP)XAML browser application (XBAP) genellikle bu Internet bölgesinde çalıştırılan ve aynı izin kümesi kullanın."Loose XAML" (pages of noncompiled XAML interpreted at load time by a XAML viewer) and XAML tarayıcısı uygulaması (XBAP)XAML browser application (XBAP) are usually run in this internet zone and use the same permission set. Ancak, barındırma uygulaması gibi tam olarak güvenilen bir uygulama için yüklenmiş XAML sistem kaynaklarına aynı erişim vardır.However, XAML loaded in to a fully trusted application has the same access to the system resources as the hosting application does. Daha fazla bilgi için WPF kısmi güven güvenliği.For more information, see WPF Partial Trust Security.

XAML kodunu yükleniyorLoading XAML from code

XAML UI tüm tanımlamak için kullanılabilir, ancak bazen de yalnızca bir kullanıcı arabirimi XAML içinde tanımlamak uygundur.XAML can be used to define all of the UI, but it is sometimes also appropriate to define just a piece of the UI in XAML. Bu özellik, bir iş nesnesi ya da olası senaryolar çeşitli XAML kullanarak bilgileri, yerel depolaması olan kısmi özelleştirmeyi etkinleştirmek için kullanılabilir.This capability could be used to enable partial customization, local storage of information, using XAML to provide a business object, or a variety of possible scenarios. Bu senaryolar için anahtar XamlReader sınıf ve onun Load yöntemi.The key to these scenarios is the XamlReader class and its Load method. Giriş bir XAML dosyası olduğunu ve çıkış, biçimlendirmeden oluşturulan çalışma zamanı nesne ağacının tümünü temsil eden bir nesnedir.The input is a XAML file, and the output is an object that represents all of the run-time tree of objects that was created from that markup. Uygulamada zaten başka bir nesnenin bir özellik olarak nesneyi daha sonra ekleyebilirsiniz.You then can insert the object to be a property of another object that already exists in the application. Uygun bir içerik modeli nihai görüntüleme yetenekleri olan ve uygulamaya yeni içerik eklendi, yürütme altyapısı bildireceğiz özelliğinde özellik olduğu sürece, çalışan bir uygulamanın içerikleri kolayca değiştirebilirsiniz XAML yükleme tarafından.So long as the property is an appropriate property in the content model that has eventual display capabilities and that will notify the execution engine that new content has been added into the application, you can modify a running application's contents very easily by loading in XAML. Bu özellik genellikle yalnızca çalıştırılmakta olan uygulamalara dosyaları yükleme güvenliğe dayalı bariz etkileri nedeniyle tam güven uygulamalarında kullanılabilir olduğunu unutmayın.Note that this capability is generally only available in full-trust applications, because of the obvious security implications of loading files into applications as they run.

YeniliklerWhat's next

WPF ile olduğu gibi bu konuda XAML söz dizimi kavramları ve terminolojiyi temel bir giriş sağlar.This topic provides a basic introduction to XAML syntax concepts and terminology as it applies to WPF. Burada kullanılan terimler hakkında daha fazla bilgi için bkz. içinde XAML söz dizimi ayrıntı.For more information about the terms used here, see XAML Syntax In Detail.

Zaten bunu yapmadıysanız, öğretici konusundaki alıştırmalar deneyin izlenecek yol: ilk WPF Masaüstü Uygulamam.If you have not already done this, try the exercises in the tutorial topic Walkthrough: My first WPF desktop application. Öğretici tarafından tanımlanan biçimlendirme odaklı uygulama oluşturduğunuzda, bu konuda açıklanan kavramlardan bir çoğunu güçlendirmek alıştırma yardımcı olur.When you create the markup-centric application described by the tutorial, the exercise will help reinforce many of the concepts described in this topic.

WPFWPF temel alan belirli uygulama modelini kullanan Application sınıfı. uses a particular application model that is based on the Application class. Ayrıntılar için bkz uygulama yönetimine genel bakış.For details, see Application Management Overview.

WPF uygulaması oluşturma XAML kapsamlı uygulamaların komut satırından ve ile nasıl yapılandırıldığı hakkında daha fazla ayrıntı sağlar Microsoft Visual StudioMicrosoft Visual Studio.Building a WPF Application gives you more details about how to build XAML inclusive applications from the command line and with Microsoft Visual StudioMicrosoft Visual Studio.

Bağımlılık özelliklerine genel bakış özelliklerinde yönlülük hakkında daha fazla bilgi veren WPFWPFve bağımlılık özellikleri kavramını sunmaktadır.Dependency Properties Overview gives more information about the versatility of properties in WPFWPF, and introduces the concept of dependency properties.

Ayrıca bkz.See also

Ayrıntılı XAML SözdizimiXAML Syntax In Detail
WPF için XAML ve Özel SınıflarXAML and Custom Classes for WPF
XAML Ad Alanı (x:) Dil ÖzellikleriXAML Namespace (x:) Language Features
WPF XAML UzantılarıWPF XAML Extensions
Temel Öğelere Genel BakışBase Elements Overview
WPF İçinde AğaçlarTrees in WPF