Přehled XAML (WPF)XAML Overview (WPF)

Toto téma popisuje funkce jazyka XAML a ukazuje, jak můžete použít XAML pro zápis Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) aplikace.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. Toto téma popisuje XAML konkrétně, jak je implementované WPFWPF.This topic specifically describes XAML as implemented by WPFWPF. XAML samotné je větší koncept jazyk než WPFWPF.XAML itself is a larger language concept than WPFWPF.

Co je XAML?What is XAML?

XAML je deklarativní jazyk.XAML is a declarative markup language. Jako použít pro programovací model rozhraní .NET Framework, XAML zjednodušuje vytváření Uživatelské rozhraníUI pro aplikace .NET Framework.As applied to the .NET Framework programming model, XAML simplifies creating a Uživatelské rozhraníUI for a .NET Framework application. Můžete vytvořit viditelné Uživatelské rozhraníUI elementy v deklarativní XAML a pak samostatné Uživatelské rozhraníUI definice z logiky běhu pomocí kódu souborů, připojený k kód prostřednictvím definice třídu.You can create visible Uživatelské rozhraníUI elements in the declarative XAML markup, and then separate the Uživatelské rozhraníUI definition from the run-time logic by using code-behind files, joined to the markup through partial class definitions. XAML přímo představuje vytváření instancí objektů v konkrétní sadu zálohování typy definované v sestavení.XAML directly represents the instantiation of objects in a specific set of backing types defined in assemblies. To je rozdíl oproti většina jiných značek jazyky, které jsou obvykle interpretovaný jazyk bez přímé vazbě na systém typ zálohování.This is unlike most other markup languages, which are typically an interpreted language without such a direct tie to a backing type system. Umožňuje XAML pracovního postupu, kde můžete samostatné strany pracovat na Uživatelské rozhraníUI a logiku aplikace, pomocí potenciálně různých nástrojů.XAML enables a workflow where separate parties can work on the Uživatelské rozhraníUI and the logic of an application, using potentially different tools.

Při reprezentován jako text, jsou soubory XAML soubory XML, které mají obvykle .xaml rozšíření.When represented as text, XAML files are XML files that generally have the .xaml extension. Soubory mohou být zakódován žádné XML kódování, ale kódování v typických UTF-8.The files can be encoded by any XML encoding, but encoding as UTF-8 is typical.

Následující příklad ukazuje, jak je možné vytvořit tlačítko jako součást Uživatelské rozhraníUI.The following example shows how you might create a button as part of a Uživatelské rozhraníUI. Tento příklad je určen pouze získáte příchuť o tom, jak představuje běžné XAML Uživatelské rozhraníUI programování metaphors (není ucelenou ukázku).This example is just intended to give you a flavor of how XAML represents common Uživatelské rozhraníUI programming metaphors (it is not a complete sample).

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

Syntaxe jazyka XAML v BriefXAML Syntax in Brief

Následující části popisují základní formy syntaxe jazyka XAML a poskytněte příklad krátký kód.The following sections explain the basic forms of XAML syntax, and give a short markup example. Tyto části nejsou určené k poskytnutí úplné informace o jednotlivých syntaxe formuláře, například jak jsou reprezentována v systému typ zálohování.These sections are not intended to provide complete information about each syntax form, such as how these are represented in the backing type system. Další informace o jaké jsou specifikace syntaxe jazyka XAML pro každou z formuláře syntaxe představenými v tomto tématu najdete v tématu XAML syntaxe v podrobností.For more information about the specifics of XAML syntax for each of the syntax forms introduced in this topic, see XAML Syntax In Detail.

Velká část informací v následujících částech několik bude základní pro vás, pokud máte předchozí znalost jazyka XML.Much of the material in the next few sections will be elementary to you, if you have previous familiarity with the XML language. Toto je důsledkem principů základní návrhu XAML.This is a consequence of one of the basic design principles of XAML. Jazyk XAML definuje vlastní koncepty, ale tyto koncepty pracovat v rámci formuláře jazyk a značek XML.The XAML language defines concepts of its own, but these concepts work within the XML language and markup form.

Objekt elementů XAMLXAML Object Elements

Element objekt obvykle deklaruje instanci typu.An object element typically declares an instance of a type. Tento typ je definována v sestavení, které poskytují základní typy pro technologie, která používá jako jazyk XAML.That type is defined in the assemblies that provide the backing types for a technology that uses XAML as a language.

Syntaxe objektu element vždy začíná úhel levou hranatou závorku (<).Object element syntax always starts with an opening angle bracket (<). Následuje název typu ve které chcete vytvořit instanci.This is followed by the name of the type where you want to create an instance. (Název může obsahovat pravděpodobně předponu konceptu, které bude vysvětleno později.) Poté můžete volitelně deklarovat atributy na objekt elementu.(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. Dokončete element značky object končit ukončovací lomená závorka (>).To complete the object element tag, end with a closing angle bracket (>). Místo toho můžete samouzavírací formulář, který nemá žádný obsah tak, že dokončení značky s lomítkem a ukončovací lomená závorka po sobě (/ >).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 (/>). Například podívejte se na fragmentu kódu dříve uvedené znovu:For example, look at the previously shown markup snippet again:

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

Toto nastavení určuje dva elementy objektu: <StackPanel> (s obsah a koncovou značku později), a <Button .../> (samouzavírací formulář, s několika atributy).This specifies two object elements: <StackPanel> (with content, and a closing tag later), and <Button .../> (the self-closing form, with several attributes). Elementy objektu StackPanel a Button každé mapování pro název třídy, který je definován WPFWPF a je součástí WPFWPF sestavení.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. Když zadáte značky elementu, můžete vytvořit instrukce pro jazyk XAML zpracování pro vytvoření nové instance.When you specify an object element tag, you create an instruction for XAML processing to create a new instance. Každá instance se vytvoří při volání konstruktoru výchozí základní typ při analýze a načítání XAML.Each instance is created by calling the default constructor of the underlying type when parsing and loading the XAML.

Atribut syntaxe (Vlastnosti)Attribute Syntax (Properties)

Vlastnosti objektu může být často vyjádřený jako atributy objektu elementu.Properties of an object can often be expressed as attributes of the object element. Atributu syntaxe názvy vlastnost, která se nastavuje v atributu syntaxi, za nímž následuje operátor přiřazení (=).An attribute syntax names the property that is being set in attribute syntax, followed by the assignment operator (=). Hodnota atributu je vždy určen jako řetězec, který je obsažený v uvozovkách.The value of an attribute is always specified as a string that is contained within quotation marks.

Atribut syntaxe je nejvíce zjednodušenou syntaxi nastavení vlastností a nejvíce intuitivní syntaxe pro vývojáře, kteří použili jazyky značek v minulosti.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. Například následující kód vytvoří tlačítko, které má červený text a modré pozadí kromě zobrazovaný text zadaný jako 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"/>

Vlastnost Element syntaxeProperty Element Syntax

Pro některé vlastnosti objektu elementu syntaxe atributu není možné, protože objekt nebo informace potřebné k zajištění hodnotu vlastnosti nelze vyjádřit adekvátní v rámci omezení řetězec atributu syntaxe a uvozovky.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. Pro tyto případy lze použít jinou syntaxi označuje jako vlastnost element syntaxe.For these cases, a different syntax known as property element syntax can be used.

Tady je syntax u počáteční značky elementu vlastnost < typeName.propertyName>.The syntax for the property element start tag is <typeName.propertyName>. Obsah této značky je obecně element objekt s typem, který vlastnost přijímá jako jeho hodnotu.Generally, the content of that tag is an object element of the type that the property takes as its value . Po zadání obsahu, je třeba nejprve zavřít element vlastnost s koncovou značku.After specifying content, you must close the property element with an end tag. Tady je syntax koncová značka </ typeName.propertyName>.The syntax for the end tag is </typeName.propertyName>.

Pokud syntaxe atribut je možné, pomocí syntaxe atribut je obvykle pohodlnější a umožňuje kompaktnější značek, ale který je často jenom řádu styl, není technická omezení.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. Následující příklad ukazuje stejné vlastnosti se nastavuje jako předchozí příklad syntaxe atribut, ale tentokrát pomocí syntaxe element vlastnost pro všechny vlastnosti 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>

Syntaxe kolekceCollection Syntax

Jazyk XAML obsahuje některé optimalizace, které vytváří více čitelná pro člověka značek.The XAML language includes some optimizations that produce more human-readable markup. Jeden takový optimalizace je, že pokud určité vlastnosti trvá typu kolekce, pak položky, které je deklarovat ve značce jako podřízených elementů v rámci této vlastnosti hodnotu stát součástí kolekce.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. Kolekce podřízených elementů objekt v tomto případě je hodnota je nastavená na vlastnost kolekce.In this case a collection of child object elements is the value being set to the collection property.

Následující příklad ukazuje syntaxi kolekce pro nastavení hodnot GradientStops vlastnost: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>  

Vlastnosti obsahu XAMLXAML Content Properties

XAML Určuje jazyk funkce, které třídy můžete určit právě jeden z jeho vlastnosti jako vlastnosti obsahu XAML.XAML specifies a language feature whereby a class can designate exactly one of its properties to be the XAML content property. Podřízené elementy elementu tohoto objektu se používají k nastavit hodnotu této vlastnosti obsahu.Child elements of that object element are used to set the value of that content property. Jinými slovy pro vlastnost obsahu jednoznačně, můžete vynechat element vlastnosti při nastavení této vlastnosti ve XAML značek a vytvořit více viditelných jedná nadřazených a podřízených ve značkách.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.

Například Border určuje obsahu vlastnost Child.For example, Border specifies a content property of Child. Následující dva Border prvky jsou považovány shodně.The following two Border elements are treated identically. První z nich využívá syntaxi vlastnost obsahu a vynechá Border.Child element vlastnosti.The first one takes advantage of the content property syntax and omits the Border.Child property element. Druhý zobrazí Border.Child explicitně.The second one shows Border.Child explicitly.

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

Platí, jazyka XAML musí být hodnota vlastnosti obsahu XAML uvedeny zcela před nebo po další prvky vlastnost zcela na tento objekt elementu.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. Například následující kód nelze kompilovat:For instance, the following markup does not compile:

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

Další informace o toto omezení na vlastnosti obsahu XAML najdete v části "Vlastnosti obsahu XAML" XAML syntaxe v podrobností.For more information about this restriction on XAML content properties, see the "XAML Content Properties" section of XAML Syntax In Detail.

Obsah textuText Content

Malý počet elementů XAML přímo může zpracovat text jako jejich obsah.A small number of XAML elements can directly process text as their content. Chcete-li povolit, jednu z následujících případech musí být splněné:To enable this, one of the following cases must be true:

  • Třída musí deklarovat vlastnost obsahu a že vlastnost obsahu musí být typu přiřaditelný k řetězec (může být typ 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). Například některé ContentControl používá Content , protože jeho vlastnost obsahu a je typu Object, a to podporuje následující využití na praktická ContentControl například 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>.

  • Typ musí deklarovat převaděče typu, ve kterém případ textového obsahu se používá jako text inicializace pro tento převaděč typů.The type must declare a type converter, in which case the text content is used as initialization text for that type converter. Například <Brush>Blue</Brush>.For example, <Brush>Blue</Brush>. Tento případ je méně častých v praxi.This case is less common in practice.

  • Typ musí být známé jazyk XAML primitivní.The type must be a known XAML language primitive.

Kolekce syntaxi kombinaci a vlastnosti obsahuContent Properties and Collection Syntax Combined

Vezměte v úvahu v tomto příkladu:Consider this example:

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

Zde každý Button je podřízený prvek StackPanel.Here, each Button is a child element of StackPanel. Toto je zjednodušený a intuitivní značky, která vynechá dvě značky pro dva různé důvody.This is a streamlined and intuitive markup that omits two tags for two different reasons.

  • Není zadán element vlastnosti StackPanel.Children: StackPanel je odvozena z Panel.Omitted StackPanel.Children property element: StackPanel derives from Panel. Panel definuje Panel.Children jako jeho XAML obsahu vlastnost.Panel defines Panel.Children as its XAML content property.

  • Není zadán element object UIElementCollection: Panel.Children vlastnost trvá typ UIElementCollection, který implementuje IList.Omitted UIElementCollection object element: The Panel.Children property takes the type UIElementCollection, which implements IList. Značky elementu kolekce lze vynechat, na základě pravidel XAML pro zpracování kolekcí, jako IList.The collection's element tag can be omitted, based on the XAML rules for processing collections such as IList. (V tomto případě UIElementCollection ve skutečnosti nelze vytvořit instance, protože nevystavuje výchozí konstruktor, a proto UIElementCollection object element se zobrazí komentovaný out).(In this case, UIElementCollection actually cannot be instantiated because it does not expose a default constructor, and that is why the UIElementCollection object element is shown commented out).

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

Atribut syntaxe (událostí)Attribute Syntax (Events)

Pro členy, kteří jsou události a nikoli vlastnosti se lze také atribut syntaxe.Attribute syntax can also be used for members that are events rather than properties. Název atributu je v tomto případě název události.In this case, the attribute's name is the name of the event. Implementace WPF události pro jazyk XAML je hodnota atributu název obslužné rutiny, který implementuje tuto událost delegáta.In the WPF implementation of events for XAML, the attribute's value is the name of a handler that implements that event's delegate. Například následující kód přiřadí obslužnou rutinu pro Click události Button vytvořené v značek: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>

Je na události a XAML v grafickém subsystému WPF víc než tento příklad syntaxe atributu.There is more to events and XAML in WPF than just this example of the attribute syntax. Například může zajímat, co ClickHandler zde odkazuje představuje a jak je definována.For example, you might wonder what the ClickHandler referenced here represents and how it is defined. To se vysvětluje v nadcházející akce události a kódu XAML části tohoto tématu.This will be explained in the upcoming Events and XAML Code-Behind section of this topic.

Případ a prázdných znaků v jazyce XAMLCase and Whitespace in XAML

XAML je obecně velká a malá písmena.XAML is generally speaking case sensitive. Pro účely překladu typy zálohování je WPF XAML velká a malá písmena stejné pravidly, že modulu CLR je malá a velká písmena.For purposes of resolving backing types, WPF XAML is case sensitive by the same rules that the CLR is case sensitive. Objekt prvky, vlastnost elementy a názvy atributů musí zadat pomocí citlivé malá a velká písmena při porovnání s názvem základní typ v sestavení nebo člena typu.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. Klíčová slova jazyka XAML a primitiv jsou také velká a malá písmena.XAML language keywords and primitives are also case sensitive. Hodnoty nejsou vždy velká a malá písmena.Values are not always case sensitive. Rozlišování velkých a malých písmen pro hodnoty bude záviset na typu chování převaděč přidružená vlastnost, která přebírá hodnotu nebo typ hodnoty vlastnosti.Case sensitivity for values will depend on the type converter behavior associated with the property that takes the value, or the property value type. Například vlastnosti, které provést Boolean typ může trvat buď true nebo True jako ekvivalentní hodnoty, ale pouze, protože nativní analyzátor WPF XAML konverze typu pro řetězec, který má Boolean již umožňuje jako ekvivalenty.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 procesory a serializátorů bude ignorovat nebo vyřadit všechny nonsignificant prázdný znak a bude normalizaci žádné významný mezerový znak.WPF XAML processors and serializers will ignore or drop all nonsignificant whitespace, and will normalize any significant whitespace. To je konzistentní s doporučeními výchozí prázdné chování specifikace XAML.This is consistent with the default whitespace behavior recommendations of the XAML specification. Toto chování je obecně jenom z důsledkem při zadávání řetězce v rámci vlastnosti obsahu XAML.This behavior is generally only of consequence when you specify strings within XAML content properties. Jednoduše řečeno XAML převede místa, konce řádku a karta znaky mezery a pak uchovává jeden místo, pokud nalezen na libovolném konci souvislý řetězec.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. Úplné vysvětlení zpracování prázdných znaků XAML není zahrnutý v tomto tématu.The full explanation of XAML whitespace handling is not covered in this topic. Podrobnosti najdete v tématu zpracování prázdných znaků v jazyce XAML.For details, see Whitespace Processing in XAML.

Rozšíření značekMarkup Extensions

Rozšíření značek jsou koncept jazyka XAML.Markup extensions are a XAML language concept. Pokud se použije k zadejte hodnotu atributu syntaxe a složené závorky ({ a }) označuje použití rozšíření značek.When used to provide the value of an attribute syntax, curly braces ({ and }) indicate a markup extension usage. Toto použití bude směrovat XAML zpracování k návratu z obecné způsob zpracování hodnot atributu jako řetězcový literál nebo hodnotu řetězce převoditelné.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.

Nejběžnější rozšíření značek, které jsou používány WPFWPF programování aplikací jsou vazbypoužívané k výrazy vazby dat a odkazy na prostředek StaticResource a 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. Pomocí rozšíření značek můžete zadat hodnoty pro vlastnosti, i když tuto vlastnost nepodporuje syntaxi atributů obecně syntaxe atributu.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. Typy výrazů zprostředkující rozšíření značek často používají k povolení funkcí, jako je například odložit hodnoty nebo odkazy na další objekty, které se nacházejí pouze v době běhu.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.

Například následující kód nastaví hodnotu Style vlastnost pomocí syntaxe atribut.For example, the following markup sets the value of the Style property using attribute syntax. Style Vlastnost přijímá instanci Style třídy, která ve výchozím nastavení nelze vytvořit instanci pomocí syntaxe řetězec atributu.The Style property takes an instance of the Style class, which by default could not be instantiated by an attribute syntax string. V takovém případě atribut odkazuje na příponu konkrétní značek, ale StaticResource.But in this case, the attribute references a particular markup extension, StaticResource. Při zpracování této – rozšíření značek vrátí odkaz na styl, která byla dříve vytvořena instance jako prostředek s klíčem ve slovníku prostředků.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>

Referenční seznam všech rozšíření značek pro jazyk XAML implementována konkrétně v grafickém subsystému WPF, najdete v části WPF XAML rozšíření.For a reference listing of all markup extensions for XAML implemented specifically in WPF, see WPF XAML Extensions. Seznam referenční rozšíření značek, které jsou definovány System.Xaml a jsou více široce dostupné pro implementace rozhraní .NET Framework XAML najdete v tématu Namespace XAML (x:) Jazykové funkce.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. Další informace o konceptech rozšíření značek najdete v tématu rozšíření značek a WPF XAML.For more information about markup extension concepts, see Markup Extensions and WPF XAML.

Převaděče typůType Converters

V XAML syntaxi Brief části bylo uvedeno, že musí být hodnota atributu může být nastavovat řetězce.In the XAML Syntax in Brief section, it was stated that the attribute value must be able to be set by a string. Je na základě základní, nativní ošetření jak řetězce se převedou na další typy objektů nebo primitivní hodnoty String zadejte sám sebe, kromě nativní zpracování pro určité typy, jako DateTime nebo 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. Ale mnoho WPFWPF typy nebo členy z těchto typů rozšířit atribut základní řetězce zpracování chování tak, že instance složitější typy objektů lze zadat jako řetězce a atributy.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 Struktura je příkladem typ, který má povolené pro použití, XAML převod typů.The Thickness structure is an example of a type that has a type conversion enabled for XAML usages. Thickness označuje měření v rámci vnořené obdélníku a slouží jako hodnota vlastnosti, jako Margin.Thickness indicates measurements within a nested rectangle and is used as the value for properties such as Margin. Umístěním převaděče typů na Thickness, všechny vlastnosti, které používají Thickness se snadněji určit v jazyce XAML, protože může být zadán jako atributy.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. Následující příklad používá k zadání hodnoty pro typ převodu a atribut syntaxe 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"/>

Předchozí příklad atribut syntaxe je ekvivalentní pro následující podrobnější příklad syntaxe, kde Margin místo toho nastavit pomocí vlastnosti element syntaxe obsahující Thickness object element.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. Čtyři klíče vlastnosti Thickness jsou nastavené jako atributy v nové instanci: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>

Poznámka

Existují také omezený počet objektů, kde převod typu je pouze veřejné způsob, jak nastavit vlastnost typu bez zásahu podtřídy, protože vlastní typ nemá výchozí konstruktor.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. Příkladem je Cursor.An example is Cursor.

Další informace o tom, jak převodu typu a jeho použití pro atribut je podporovaná syntaxe najdete v tématu TypeConverters a XAML.For more information on how type conversion and its use for attribute syntax is supported, see TypeConverters and XAML.

Kořenové elementů XAML a obory názvů jazyka XAMLXAML Root Elements and XAML Namespaces

Soubor XAML musí mít jenom jeden kořenový element, aby byla obou ve správném formátu XMLXML a platný soubor XAML.A XAML file must have only one root element, in order to be both a well-formed XMLXML file and a valid XAML file. Pro typické scénáře WPF, můžete použít kořenový element, který má viditelného význam ve model aplikace WPF (například Window nebo Page pro stránku, ResourceDictionary pro externí slovník, nebo Application pro definici aplikace).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). Následující příklad ukazuje kořenový element typické souboru XAML pro WPFWPF stránka s kořenový prvek 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>

Kořenový element také obsahuje atributy xmlns a xmlns:x.The root element also contains the attributes xmlns and xmlns:x. Tyto atributy znamenat XAML procesor, který obory názvů jazyka XAML obsahovat definice typů pro zálohování typy, které kód bude odkazovat jako elementy.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 Atribut konkrétně určuje výchozí obor názvů jazyka XAML.The xmlns attribute specifically indicates the default XAML namespace. V rámci oboru názvů jazyka XAML výchozí objekt elementy ve značkách lze bez předpony.Within the default XAML namespace, object elements in the markup can be specified without a prefix. Pro většinu WPFWPF scénáře aplikací a pro téměř všechny příklady v WPFWPF části Sada SDKSDK, výchozí obor názvů jazyka XAML je namapována na WPFWPF obor názvů 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 Sada 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 Atribut uvádí další XAML názvů, který mapuje oboru názvů jazyka XAML 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.

Toto použití xmlns k definování oboru pro využití a mapování namescope je v souladu s specifikace XML 1.0.This usage of xmlns to define a scope for usage and mapping of a namescope is consistent with the XML 1.0 specification. XAML namescopes se liší od XML namescopes pouze v tomto XAML namescope také znamená něco jak namescope elementy jsou zajišťované typy při přechodu na typ překlad IP adres a analýza XAML.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.

Všimněte si, že xmlns atributy jsou jenom nezbytně nutná v kořenovém elementu každého souboru XAML.Note that the xmlns attributes are only strictly necessary on the root element of each XAML file. xmlns definice budou platit pro všechny následné elementy kořenového prvku (Toto chování je konzistentní s specifikace XML 1.0 pro znovu xmlns.) xmlns atributy jsou také povolená na další prvky pod kořenovým adresářem a by platí pro všechny následnickým elementům definující elementu.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. Ale často definice nebo předefinování obory názvů jazyka XAML může způsobit XAML styl značek, které je obtížné číst.However, frequent definition or redefinition of XAML namespaces can result in a XAML markup style that is difficult to read.

WPFWPF Infrastruktura, která obsahuje informace o základních sestavení WPF obsahuje implementaci jeho XAML procesoru.The WPFWPF implementation of its XAML processor includes an infrastructure that has awareness of the WPF core assemblies. WPFWPF Základních sestavení se ví, obsahovat typy, které podporují WPFWPF mapování oboru názvů jazyka XAML výchozí.The WPFWPF core assemblies are known to contain the types that support the WPFWPF mappings to the default XAML namespace. Tato možnost je povolena prostřednictvím konfigurace, který je součástí vaší sestavení projektu soubor a WPF sestavení a projektu systémy.This is enabled through configuration that is part of your project build file and the WPF build and project systems. Proto deklarace oboru názvů jazyka XAML výchozí jako výchozí xmlns je všechno, co je nezbytné, aby odkazovat elementů XAML, které pocházejí z WPFWPF sestavení.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.

Předpona x:The x: Prefix

V předchozím příkladu kořenový element, předponu x: byl použit k mapování oboru názvů jazyka XAML http://schemas.microsoft.com/winfx/2006/xamlhttp://schemas.microsoft.com/winfx/2006/xaml, který je vyhrazený oboru názvů jazyka XAML, který podporuje jazyk XAML vytvoří.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. To x: předpona se používá pro mapování tento obor názvů jazyka XAML v šablonách pro projekty, příklady a dokumentaci v rámci to Sada SDKSDK.This x: prefix is used for mapping this XAML namespace in the templates for projects, in examples, and in documentation throughout this Sada SDKSDK. Oboru názvů jazyka XAML pro jazyk XAML obsahovat několik programovací konstrukce, které budete používat velmi často ve vašem XAML.The XAML namespace for the XAML language contain several programming constructs that you will use very frequently in your XAML. Následuje seznam nejobvyklejší x: předpony programovací konstrukce, které budete používat:The following is a listing of the most common x: prefix programming constructs you will use:

  • x: Key: Nastaví jedinečný klíč pro každý zdroj v ResourceDictionary (nebo podobné slovník koncepty v jiných rozhraní).x:Key: Sets a unique key for each resource in a ResourceDictionary (or similar dictionary concepts in other frameworks). x:Key pravděpodobně bude účet pro 90 % x: použití, zobrazí se v typické aplikaci WPF značek.x:Key will probably account for 90% of the x: usages you will see in a typical WPF application's markup.

  • x: Class –: Určuje CLRCLR obor názvů a třídy pro třídu, která poskytuje kódu stránky XAML.x:Class: Specifies the CLRCLR namespace and class name for the class that provides code-behind for a XAML page. Třídy pro podporu kódu podle programovacího modelu WPF musí mít, a proto téměř vždy zobrazí x: namapované, i když nejsou žádné prostředky.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: Určuje název běhového objektu pro instanci, která existuje v běhu kódu po zpracování objektu elementu.x:Name: Specifies a run-time object name for the instance that exists in run-time code after an object element is processed. Obecně platí, často použijete definované WPF ekvivalentní vlastnost pro x: Name.In general, you will frequently use a WPF-defined equivalent property for x:Name. Tyto vlastnosti namapovat konkrétně CLR, zálohování vlastnosti a jsou tedy pohodlnější pro programování aplikací, kde je často běhu kódu vyhledat pomocí pojmenovaného elementy z inicializovaného XAML.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. Nejběžnější tato vlastnost je FrameworkElement.Name.The most common such property is FrameworkElement.Name. Mohou přesto používat x: Name při ekvivalentní WPF úrovni framework Name vlastnost není podporována v konkrétní typ.You might still use x:Name when the equivalent WPF framework-level Name property is not supported in a particular type. K tomu dochází v některých scénářích animace.This occurs in certain animation scenarios.

  • x: Static: umožňuje odkaz, který vrátí statickou hodnotu, která není jinak vlastnost XAML kompatibilní.x:Static: Enables a reference that returns a static value that is not otherwise a XAML-compatible property.

  • x: Type: vytvoří Type odkaz založen na názvu typu.x:Type: Constructs a Type reference based on a type name. To slouží k určení atributy, které mají Type, jako Style.TargetType, i když často vlastnost má nativní řetězec-na-Type převod tak, který x: Type využití rozšíření značek Volitelný parametr.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.

Existují další programovací konstrukce v x: oboru názvů předponu/jazyka XAML, které nejsou jako společné.There are additional programming constructs in the x: prefix/XAML namespace, which are not as common. Podrobnosti najdete v tématu Namespace XAML (x:) Jazykové funkce.For details, see XAML Namespace (x:) Language Features.

Vlastní předpony a vlastních typů v jazyce XAMLCustom Prefixes and Custom Types in XAML

Pro vlastní vlastní sestavení, nebo sestavení mimo základní WPF PresentationCore, PresentationFramework a WindowsBase, můžete zadat sestavení jako součást vlastní xmlns mapování.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. Pak můžete odkazovat typy z tohoto sestavení v XAML, tak dlouho, dokud tento typ je správně implementována pro podporu použití XAML, který se pokoušíte.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.

Následuje velmi základních příkladů jak vlastní pracovní předpony v XAML značek.The following is a very basic example of how custom prefixes work in XAML markup. Předpona custom je definované ve značce elementu kořenové a namapovat na konkrétní sestavení, která je dostupná s aplikací a zabalené.The prefix custom is defined in the root element tag, and mapped to a specific assembly that is packaged and available with the application. Toto sestavení obsahuje typ NumericUpDown, která je implementována pro podporu obecné použití XAML a také pomocí dědičnost třídy, která umožňuje jeho vložení v tomto okamžiku konkrétní modelu obsahu WPF XAML.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. Instanci tohoto objektu NumericUpDown ovládací prvek je deklarovaný jako objekt element, pomocí předponu, aby XAML analyzátor věděla, které XAML obor názvů obsahuje typ a proto kde je základní sestavení obsahující definici typu.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>  

Další informace o vlastních typů v jazyce XAML najdete v tématu XAML a vlastní třídy pro grafický subsystém WPF.For more information about custom types in XAML, see XAML and Custom Classes for WPF.

Další informace o obory názvů XML a obory názvů kód základní sestavení jak souvisí, najdete v části obory názvů jazyka XAML a Namespace mapování pro jazyk XAML WPF.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.

Události a kódu XAMLEvents and XAML Code-Behind

Většina WPFWPF aplikace se skládají z XAML značek a kódu.Most WPFWPF applications consist of both XAML markup and code-behind. V projektu, je zapsán XAML jako .xaml souboru a CLRCLR jazyk, jako je například Microsoft Visual Basic a C# se používá k zápisu souboru kódu na pozadí.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. Jako součást WPF programovací a aplikace modely kompilaci kódu po souboru XAML umístění kódu XAML soubor pro soubor XAML je identifikována zadání oboru názvů a třídy jako x:Class atribut kořenového prvku XAML.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.

V příkladech, pokud jste viděli několik tlačítek, ale žádná z těchto tlačítek byl žádné logické chování ještě s nimi spojených.In the examples so far, you have seen several buttons, but none of these buttons had any logical behavior associated with them yet. Primární mechanismus úrovni aplikace pro přidání chování pro daný objekt element je používat existující událost třídy elementu a k zápisu konkrétní obslužnou rutinu pro tuto událost, která je volána, když tuto událost se vyvolá v době běhu.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. Název události a název obslužné rutiny používat jsou určené v kód, zatímco kód, který implementuje vaší obslužné rutiny je definována v modelu code-behind.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

Všimněte si, že souboru kódu na pozadí používá obor názvů CLR ExampleNamespace a deklaruje ExamplePage jako částečné třídy v daném oboru názvů.Notice that the code-behind file uses the CLR namespace ExampleNamespace and declares ExamplePage as a partial class within that namespace. To je paralelní x:Class hodnotu atributu ExampleNamespace.ExamplePageThis parallels the x:Class attribute value of ExampleNamespace.ExamplePage který zadaná v kořenu značek.that was provided in the markup root. WPF kód bude vytvořen konkrétní třídu pro všechny kompilované souboru XAML odvozením třídy od typ kořenového elementu.The WPF markup compiler will create a partial class for any compiled XAML file, by deriving a class from the root element type. Když zadáte kódu, který definuje také stejnou třídu, je v rámci stejný obor názvů a třídy kompilované aplikace kombinaci výsledný kód.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.

Další informace o požadavcích pro programování kódu v grafickém subsystému WPF, najdete v části "kódu, obslužné rutiny události a požadavky na třídu" z kódu a XAML v grafickém subsystému WPF.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.

Pokud nechcete vytvořit soubor samostatné kódu, můžete také vloženého kódu v souboru XAML.If you do not want to create a separate code-behind file, you can also inline your code in a XAML file. Vložený kód je však méně univerzální technika, který má významné omezení.However, inline code is a less versatile technique that has substantial limitations. Podrobnosti najdete v tématu kódu a XAML v grafickém subsystému WPF.For details, see Code-Behind and XAML in WPF.

Směrované událostiRouted Events

Funkce určitá událost, která je nezbytné, aby WPFWPF je směrované události.A particular event feature that is fundamental to WPFWPF is a routed event. Směrované události povolit element zpracovat událost, která byla vyvolána podle různých prvku, tak dlouho, dokud elementy jsou propojeny pomocí vztahu stromu.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. Při zadávání zpracování s atributem XAML událostí, můžete směrované události naslouchali pro a zpracovává u libovolného elementu, včetně elementů, které neuvádějte danou událost v tabulce členy třídy.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. To se provádí kvalifikující události atribut name s vlastnícím název třídy.This is accomplished by qualifying the event name attribute with the owning class name. Například nadřazené StackPanel v probíhající StackPanel / Button příkladu by se mohl zaregistrovat obslužnou rutinu pro tlačítko podřízený element Click událostí zadáním atribut Button.Click na StackPanel element Object názvem vaší obslužné rutiny jako hodnota atributu.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. Další informace o způsobu směrovaný pracovní událostí najdete v tématu směrovány Přehled událostí.For more information about how routed events work, see Routed Events Overview.

S názvem elementů XAMLXAML Named Elements

Ve výchozím nastavení instance objektu, který je vytvořen v grafu objektů zpracováním element XAML objekt nemá jedinečný identifikátor nebo odkaz na objekt.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. Naproti tomu při volání konstruktoru v kódu, téměř vždy použijete výsledek konstruktor nastavte proměnnou na zkonstruovaná instance, tak, aby instance, můžete odkazovat později ve svém kódu.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. Chcete-li poskytovat standardizované přístup k objektům, vytvořené pomocí značek definice, XAML definuje x: Name – atribut.In order to provide standardized access to objects that were created through a markup definition, XAML defines the x:Name attribute. Můžete nastavit hodnotu x:Name atribut u libovolného elementu objektu.You can set the value of the x:Name attribute on any object element. Ve vašem kódu je ekvivalentní proměnnou instance, který odkazuje na zkonstruovaná instance identifikátor, který zvolíte.In your code-behind, the identifier you choose is equivalent to an instance variable that refers to the constructed instance. Ve všech ohledech s názvem elementy funkce, jako kdyby byly instance objektů (název odkazuje na tato instance) a vašeho kódu odkazovat pojmenované elementy pro zpracování interakce běhu v aplikaci.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. Toto připojení mezi instancemi a proměnné provádí kompilátoru značek WPF XAML a více konkrétně zahrnují funkce a vzorů, jako InitializeComponent , nebude se podrobněji v tomto tématu.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.

Zdědit elementů XAML úrovni rozhraní WPF Name vlastnost, která je ekvivalentní XAML definované x:Name atribut.WPF framework-level XAML elements inherit a Name property, which is equivalent to the XAML defined x:Name attribute. Některé jiné třídy taky zadat vlastnost úrovni ekvivalenty pro x:Name, který je také obecně definován jako Name vlastnost.Certain other classes also provide property-level equivalents for x:Name, which is also generally defined as a Name property. Obecně platí, že pokud nemůžete najít Name v tabulce členy pro vaše vybraný element nebo typ, použijte vlastnost x:Name místo.Generally speaking, if you cannot find a Name property in the members table for your chosen element/type, use x:Name instead. x:Name Hodnoty bude poskytovat identifikátor elementu XAML, který lze použít v době běhu pomocí konkrétní subsystémy nebo pomocí pomocné metody, jako 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.

Následující příklad sady Name na StackPanel elementu.The following example sets Name on a StackPanel element. Potom obslužné rutiny na Button v rámci které StackPanel odkazy StackPanel prostřednictvím odkaz na jeho instanci buttonContainer jako nastavte podle 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

Stejně jako proměnnou názvu XAML pro instance se řídí koncept oboru, tak, aby názvy je možné vynutit být jedinečný v rámci oboru, který je předvídatelný.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. Primární kód, který definuje stránky označuje jeden jedinečný XAML namescope k hranici namescope XAML se kořenový element této stránce.The primary markup that defines a page denotes one unique XAML namescope, with the XAML namescope boundary being the root element of that page. Ale jiných zdrojů značek mohou komunikovat s stránky v době běhu, jako je například styly nebo šablony v rámci styly, a těchto zdrojů, značek často mají své vlastní namescopes XAML, který se nutně nepřipojí s namescope XAML stránky.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. Další informace o x:Name a XAML namescopes najdete v části Name, x: Name – direktiva, nebo WPF XAML Namescopes.For more information on x:Name and XAML namescopes, see Name, x:Name Directive, or WPF XAML Namescopes.

Přidružené vlastnosti a přidružené událostiAttached Properties and Attached Events

XAML Určuje jazyk funkce, která umožňuje určité vlastnosti nebo událostí, které je třeba zadat u libovolného elementu, bez ohledu na to, jestli existuje vlastnost nebo události v definicích typu pro element, který bude nastavena na.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. Vlastnosti verze této funkce je volána přidružená vlastnost, verze události se nazývá přidružená událost.The properties version of this feature is called an attached property, the events version is called an attached event. Koncepčně si můžete představit přidružené vlastnosti a přidružené události jako globální členy, které lze nastavit na jakoukoli instanci XAML nebo objekt elementu.Conceptually, you can think of attached properties and attached events as global members that can be set on any XAML element/object instance. Ale element nebo třídy nebo větší infrastruktury musí podporovat zálohování úložiště vlastností pro připojené hodnoty.However, that element/class or a larger infrastructure must support a backing property store for the attached values.

Přidružené vlastnosti v jazyce XAML jsou obvykle používány prostřednictvím syntaxe atributu.Attached properties in XAML are typically used through attribute syntax. V syntaxi atribut zadáte přidružená vlastnost ve formě ownerType. propertyName.In attribute syntax, you specify an attached property in the form ownerType.propertyName.

Na první pohled, to vypadá takto: použití elementu vlastnosti, ale v takovém případě ownerType zadáte, je vždy jiný atribut type než object element kde je právě připojená vlastnost nastavená.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 je typ, který poskytuje přistupující objekt metody, které jsou vyžadované procesor XAML za účelem získání nebo nastavení hodnoty vlastnosti připojené.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.

Nejběžnější scénáře pro přidružené vlastnosti je umožnit podřízené elementy informuje hodnotu vlastnosti o jejich nadřazeného elementu.The most common scenario for attached properties is to enable child elements to report a property value to their parent element.

Následující příklad ukazuje DockPanel.Dock přidružená vlastnost.The following example illustrates the DockPanel.Dock attached property. DockPanel Třída definuje přistupující objekty pro DockPanel.Dock a proto je vlastníkem připojená vlastnost.The DockPanel class defines the accessors for DockPanel.Dock and therefore owns the attached property. DockPanel Třída také obsahuje logiku, která iteruje její podřízené elementy a konkrétně zkontroluje každý prvek pro hodnotu sady 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. Pokud je nalezen hodnotu, tato hodnota se používá během rozložení na pozici podřízené elementy.If a value is found, that value is used during layout to position the child elements. Použití DockPanel.Dock přidružená vlastnost a tato umísťovací funkce je ve skutečnosti motivačních scénář pro DockPanel třídy.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>

V WPFWPF, většině nebo všem přidružené vlastnosti jsou implementované také jako vlastnosti závislosti.In WPFWPF, most or all the attached properties are also implemented as dependency properties. Podrobnosti najdete v tématu připojen přehled vlastností.For details, see Attached Properties Overview.

Použít přidružené události podobné ownerType. eventName formu atributu syntaxe.Attached events use a similar ownerType.eventName form of attribute syntax. Stejně jako nepřipojené události určuje hodnota atributu přidružená událost v jazyce XAML název metody obslužné rutiny, která je volána, když se zpracovává událost v elementu.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. Použití přidružená událost v jazyce XAML WPF je méně běžné.Attached event usages in WPF XAML are less common. Další informace najdete v tématu připojen přehled událostí.For more information, see Attached Events Overview.

Základní typy a XAMLBase Types and XAML

Základní WPF XAML a jeho oboru názvů jazyka XAML je kolekci typů, které odpovídají CLRCLR objekty kromě prvky značek pro jazyk XAML.Underlying WPF XAML and its XAML namespace is a collection of types that correspond to CLRCLR objects in addition to markup elements for XAML. Ne všechny třídy však lze mapovat na elementy.However, not all classes can be mapped to elements. Abstraktní třídy, jako například ButtonBase, a používají se pro dědičnosti v určitých neabstraktní základní třídy CLRCLR objekty modelu.Abstract classes, such as ButtonBase, and certain nonabstract base classes are used for inheritance in the CLRCLR objects model. Základní třídy, včetně těch abstraktní, jsou pro vývoj XAML stále důležité, protože každý z konkrétní elementů XAML dědí členy ze základní třídy, které se v hierarchii.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. Tito členové často patří vlastnosti, které lze nastavit jako atributy v elementu nebo událostí, které mohou být zpracovány.Often these members include properties that can be set as attributes on the element, or events that can be handled. FrameworkElement je konkrétní základní Uživatelské rozhraníUI třídu WPFWPF na úrovni framework WPF.FrameworkElement is the concrete base Uživatelské rozhraníUI class of WPFWPF at the WPF framework level. Při navrhování Uživatelské rozhraníUI, budete používat různé tvaru, panel, dekoratéra nebo – třídy ovládacích prvků, které všechna odvozena od FrameworkElement.When designing Uživatelské rozhraníUI, you will use various shape, panel, decorator, or control classes, which all derive from FrameworkElement. Související základní třídu, FrameworkContentElement, podporuje dokumentu zaměřené na konkrétní prvky, které fungovat i pro prezentaci rozložení toku pomocí APIAPIs který úmyslně zrcadlení APIAPIs v FrameworkElement.A related base class, FrameworkContentElement, supports document-oriented elements that work well for a flow layout presentation, using APIAPIs that deliberately mirror the APIAPIs in FrameworkElement. Kombinace atributů na úrovni elementu a CLRCLR objektový model poskytuje sadu společných vlastností, které jsou nastavit na nejvíce konkrétní elementů XAML, bez ohledu na konkrétní element jazyka XAML a jeho zdrojovým typem.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 – zabezpečeníXAML Security

XAML je jazyk kódu, který přímo představuje vytvoření instance objektu a spouštění.XAML is a markup language that directly represents object instantiation and execution. Proto prvků vytvořených v jazyce XAML mít stejné možnost využívat systémové prostředky (přístup do sítě, soubor systému vstupně-výstupní operace, například) jako ekvivalentní, vygeneruje kód neobsahuje.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 podporuje .NET Framework 4.NET Framework 4 zabezpečení framework Zabezpečení přístupu kódu (CAS)Code Access Security (CAS). supports the .NET Framework 4.NET Framework 4 security framework Zabezpečení přístupu kódu (CAS)Code Access Security (CAS). To znamená, že WPFWPF obsah spuštěný v zóně internet omezila oprávnění provádění.This means that WPFWPF content running in the internet zone has reduced execution permissions. "Ke ztrátě XAML" (stránky noncompiled XAML interpretovat při načítání, prohlížeč XAML) a Aplikace prohlížeče XAML (XBAP)XAML browser application (XBAP) jsou obvykle spustit v této zóně internet a použít stejnou sadu oprávnění."Loose XAML" (pages of noncompiled XAML interpreted at load time by a XAML viewer) and Aplikace prohlížeče XAML (XBAP)XAML browser application (XBAP) are usually run in this internet zone and use the same permission set. XAML načíst ve plně důvěryhodný pro aplikaci však má stejný přístup k systémovým prostředkům, stejně jako hostitelskou aplikaci.However, XAML loaded in to a fully trusted application has the same access to the system resources as the hosting application does. Další informace najdete v tématu WPF částečné důvěryhodnosti zabezpečení.For more information, see WPF Partial Trust Security.

Načítání z kódu jazyka XAMLLoading XAML from Code

XAML lze použít k definování všechny rozhraní, ale je někdy také vhodné definují právě části uživatelského rozhraní v jazyce XAML.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. Tato funkce může za účelem částečné přizpůsobení místního úložiště informací, které poskytují objekt obchodní nebo celou řadu možných scénářích pomocí XAML.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. Tyto scénáře je XamlReader třídy a jeho Load metoda.The key to these scenarios is the XamlReader class and its Load method. Vstup je soubor XAML a výstup je objekt, který reprezentuje všechny stromu běhu objektů, který byl vytvořen z těchto značek.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. Potom můžete vložit objekt, který má být vlastnost jiného objektu, který již existuje v aplikaci.You then can insert the object to be a property of another object that already exists in the application. Pokud je vlastnost příslušné vlastnosti v modelu obsahu, který má možnosti případné zobrazení a který oznámí modul provádění že byl přidán nový obsah do aplikace, můžete velmi snadno upravit obsah spuštěné aplikace podle načítání v jazyce XAML.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. Všimněte si, že tato funkce je obecně k dispozici pouze ve plně důvěryhodné aplikace, z důvodu zřejmé bezpečnostních důsledcích načtení souborů do aplikací při spuště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.

Co je dalšíWhat's Next

Toto téma obsahuje základní informace o XAML syntaxe principy a terminologií, která se vztahuje na WPF.This topic provides a basic introduction to XAML syntax concepts and terminology as it applies to WPF. Další informace o podmínky použít se zde najdete v tématu XAML syntaxe v podrobností.For more information about the terms used here, see XAML Syntax In Detail.

Pokud jste to ještě neudělali, zkuste praktická cvičení v kurzu tématu návod: Můj první desktopová aplikace WPF.If you have not already done this, try the exercises in the tutorial topic Walkthrough: My first WPF desktop application. Při vytvoření značek zaměřená na aplikace, které jsou popsané v kurzu, bude výkonu pomohli posílit řadu konceptů popsaných v tomto tématu.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 používá model konkrétní aplikace, který je založen na Application třídy. uses a particular application model that is based on the Application class. Podrobnosti najdete v tématu přehled správy aplikací.For details, see Application Management Overview.

Vytvoření aplikace WPF získáte další informace o tom, jak vytvářet aplikace inkluzivní XAML z příkazového řádku a s 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.

Přehled vlastností závislostí poskytuje další informace o univerzálnost vlastností v WPFWPFa zavádí koncepci vlastností závislostí.Dependency Properties Overview gives more information about the versatility of properties in WPFWPF, and introduces the concept of dependency properties.

Viz takéSee Also

Podrobná syntaxe XAMLXAML Syntax In Detail
XAML a vlastní třídy pro WPFXAML and Custom Classes for WPF
Jazykové funkce oboru názvů jazyka XAML (x:)XAML Namespace (x:) Language Features
Rozšíření WPF XAMLWPF XAML Extensions
Přehled základních elementůBase Elements Overview
Stromy v subsystému WPFTrees in WPF