Aracılığıyla paylaş


XAML'e Genel Bakış (WPF)

Bu konu, xaml dil özelliklerini açıklar ve xaml yazmak için nasıl kullanabileceğinizi gösterir Windows Presentation Foundation (WPF) uygulamaları. Bu konuda özellikle xaml tarafından uygulanan açıklar WPF. xaml kendisini olduğundan daha büyük bir dil kavram WPF.

Bu konu aşağıdaki bölümleri içerir.

  • What is XAML?
  • xaml sözdiziminde kısa
  • Büyük/küçük harf ve alfabe dışı karakter xaml
  • Biçimlendirme uzantıları
  • Türü dönüştürücüler
  • xaml kök öğeleri ve xaml ad alanları
  • Özel önekleri ve xaml özel türleri
  • Olaylar ve xaml arkadaki kod
  • Öğeleri adlı xaml
  • Eklenen özellikler ve ekli olaylar
  • Temel türler ve xaml
  • XAML Security
  • xaml kodunu yükleme
  • What's Next
  • İlgili Konular

What is XAML?

xaml bir bildirime dayanan biçimlendirme dilidir. Uygulanan gibi .NET Framework xaml oluşturma basitleştirir programlama modeli, bir UI için bir .NET Framework uygulama. Oluşturabileceğiniz görünür UI öğeleri bildirimsel xaml işaretleme ve sonra ayrı UI çalışma mantığı kullanarak arka planda dosyaları, biçimlendirme ile katılan tanımındankısmi sınıf tanımları. xaml belirli türleri derlemeleri tanımlı yedekleme kümesi nesnelerinin örneğini oluşturmada doğrudan temsil eder. Genellikle bir yedekleme türü sistemine doğrudan bağ olmadan bir yorumlama dili olan çoğu diğer biçimlendirme dillerini, aksine budur. xaml yeri ayrı taraflara çalışması üzerinde bir iş akışı sağlayan UI ve mantık bir uygulama kullanarak farklı olabilecek Araçlar.

Metin olarak temsil edildiğinde xaml dosyaları genellikle xml dosyalarıdır .xaml uzantısı. Herhangi xml kodlama, ancak utf-8 normal olduğu gibi kodlama tarafından kodlanmış dosyaları.

Aşağıdaki örnek, nasıl bir parçası olarak bir düğme oluşturabilirsiniz gösterir bir UI. Bu örnek yalnızca, xaml genel Sunuş Şekli, bir özellik amaçlamaktadır UI (olmadığı tam bir örnek) metaphors programlama.

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

xaml sözdiziminde kısa

Aşağıdaki bölümlerde, xaml sözdiziminin temel formları açıklamak ve kısa biçimlendirme örneği verin. Bu yedekleme türü sistemde nasıl gösterileceğini gibi her syntax formu hakkında tam bilgi sağlamak için bu bölümleri amaçlanmamıştır. Daha fazla xaml sözdizimi hakkında bilgi için ayrıntıları bu konudaki tanıtılan sözdizimi için bkz: Ayrıntılı XAML Sözdizimi.

Sonraki birkaç bölümlerindeki malzeme xml dili ile önceki benzerlik varsa, Exchange'in olacak. XAML temel tasarım ilkeleri bir sonucu budur. xaml xaml dilini kendi kavramlarını tanımlar, ancak bu kavramlar xml dili ve işaretleme form içinde çalışır.

xaml nesne öğeleri

Bir object öğesini genellikle bir tür örneğini bildirir. Bu tür yedekleme türleri için xaml dili olarak kullanan bir teknoloji sunan derlemeleri tanımlanır.

Nesne öğesi sözdizimi, her zaman bir açılış parantezini ile (<) başlar. Bu tür tarafından örneğini oluşturmak istediğiniz yere gelir. (Adı büyük olasılıkla daha sonra açıklanması bir kavram bir önek içerebilir.) Bundan sonra isteğe bağlı öznitelikleri nesnesi öğesinde bildirebilirsiniz. Nesne öğesi etiketini tamamlamak için kapanış açılı ayraç (>) end. Bunun yerine ters eğik çizgi işaretiyle Tamamlanıyor ve kapanış parantezini art arda herhangi bir içeriği olmayan self-closing form kullanabilirsiniz (/ >). Örneğin, daha önce gösterilen işaretleme parçacık yeniden bakın:

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

Bu iki nesne öğelerini belirtir: <StackPanel>(ile içerik ve daha sonra bir kapatma etiketi), ve <Button .../> (self-closing formla, çeşitli öznitelikleri). Nesne öğelerini StackPanel ve Button tarafından tanımlanan sınıfın adını her Eşle WPF bir parçasıdır ve WPF derlemeler. Nesne öğesi etiketinin belirttiğinizde, bir yönerge için yeni bir örneğini oluşturmak için işleme xaml oluşturun. Ayrıştırma ve xaml yükleme temel türü varsayılan kurucuyu çağırarak her örneği oluşturulur.

Öznitelik sözdizimi (özellikleri)

Nesnenin özelliklerini genellikle object öğesini öznitelik olarak ifade edilebilir. Bir öznitelik sözdizimi öznitelik sözdizimi, atama işleci (=) ve ardından ayarlamak özellik adları. Özniteliğin değeri her zaman tırnak işaretleri içinde yer alan bir dize olarak belirtilir.

Öznitelik sözdizimi en modern özellik ayarı sözdizimi ve geçmişte biçimlendirme dillerini kullanan geliştiriciler için kullanılacak en sezgisel sözdizimi aşağıdaki gibidir. Örneğin, aşağıdaki biçimlendirme kırmızı metin ve görüntü metni olarak belirtilen yanında mavi bir arka plana sahip bir düğme oluşturur Content.

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

Özellik öğesi sözdizimi

Nesne veya özellik değeri sağlamak için gerekli bilgileri yeterince tırnak işareti ve öznitelik sözdizimi dize kısıtlamaları içinde ifade edilemeyen bir object öğesini bazı özelliklerinin öznitelik sözdizimi, olanaksızdır. Bu durumda, özelliği öğesi sözdizimi olarak bilinen farklı bir sözdizimi kullanılır.

Özellik öğenin başlangıç etiketi sözdizimi <typeName.propertyName>. Genellikle, bu özelliğin değeri alır türünde bir nesne öğe içeriktir. İçerik belirttikten sonra özellik öğe bitiş etiketi ile kapatmanız gerekir. Bitiş etiketi sözdizimi </typeName.propertyName>.

Bir öznitelik sözdizimi Mümkünse, öznitelik sözdizimini kullanarak genellikle daha kolaydır ve daha kompakt bir işaretlemesini etkinleştirir, ancak, genellikle stili, teknik bir sınırlama değil yalnızca bir kaç. Aşağıdaki örnek için tüm özelliklerini özellik öğesi sözdizimi kullanarak önceki öznitelik sözdizimi örneği, ancak bu kez olarak ayarlanan aynı özellikleri gösterir 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>

Koleksiyonu sözdizimi

xaml dilini daha okunabilir işaretleme üreten bazı iyileştirmeleri içerir. Belirli bir özelliğin bir koleksiyon türü ve bu özelliğin değeri haline koleksiyon parçası içindeki alt öğeler olarak işaretlemeyi bildirmek Öğe sürerse bir iyileştirme olmasıdır. Bu durumda alt nesne öğelerini koleksiyon özelliği için ayarlanan değer koleksiyonudur.

Değerlerini ayarlamak koleksiyonu sözdizimi aşağıdaki örnekte gösterilmektedir GradientStops özelliği:

<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 içerik özellikleri

xaml alınabildiği bir sınıfın tek bir xaml içerik özelliği özellikleri belirleyebilirsiniz bir dil özelliğini belirtir. Bu nesne öğenin alt öğelerini içerik bu özelliğin değerini ayarlamak için kullanılır. Başka bir deyişle, içerik özellik için benzersiz, xaml İşaretlemede bu özelliği ayarlarken bir özellik öğesi atlamak ve biçimlendirme de daha görünür bir üst/alt mecazının üretmek.

Örneğin, Border bir içerik özelliği belirtir Child. Aşağıdaki iki Border öğeleri özdeş olarak davranılan. İlk içerik özelliği sözdizimi yararlanır ve atlar Border.Child özelliği öğesi. İkincisi gösterir Border.Child açıkça.

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

xaml diline bir kural olarak, xaml içerik özelliğinin değeri tamamen önce veya tamamen başka bir özellik öğelerinin sonra o nesnesi öğesinde verilmelidir. Örneğin, aşağıdaki işaretleme derleme yapmaz:

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

xaml içerik özellikleri bu kısıtlama hakkında daha fazla bilgi için bkz: "xaml içerik özellikleri" kısmında Ayrıntılı XAML Sözdizimi.

Metin içeriği

xaml öğeler az sayıda, metin içeriklerini doğrudan işleyebilir. Bunu etkinleştirmek için aşağıdaki durumlarda birinin doğru olması gerekir:

  • İçerik özelliği sınıf bildirmeniz gerekir ve o içerik özelliği bir dize olarak atanabilir bir türde olması gerekir (tipi olabilir Object). Örneğin, herhangi ContentControl kullanan Content türü içerik, özellik ve onu olduğu gibi Object, ve bu aþaðýdaki kullanýmýn practical üzerinde destekler ContentControl gibi bir Button: <Button>Hello</Button>.

  • Tür durumda metin içeriği için bu tür dönüştürücü başlatma metni olarak kullanılır, bir türü dönüştürücü bildirmeniz gerekir. For example, <Brush>Blue</Brush>. Bu durumda, uygulamada daha az yaygındır.

  • Bilinen bir xaml dilini temel olmalıdır.

İçerik özellikleri ve birleştirilmiş koleksiyonu sözdizimi

Bu örneði ele alalým:

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

Burada, her Button bir alt öğesi olan StackPanel. İki farklı nedenlerle iki etiket atlar, kolay ve sezgisel bir sair gideri budur.

  • Belirtilmemiş StackPanel.Children özelliği öğe: StackPaneltüretildiği Panel. Paneltanımlar Panel.Children olarak, xaml içerik özelliği.

  • Belirtilmemiş UIElementCollection object öğesini: Panel.Children Özellik türü alır UIElementCollection, hangi Implements IList. Koleksiyonları gibi işlemek için xaml kurallara göre koleksiyon öğesi etiket atlanabilir IList. (Bu durumda, UIElementCollection bir varsayýlan kurucu göstermiyor ve budur çünkü gerçekten örneği oluşturulamıyor UIElementCollection object öğesini dışarı açıklamalı gösterilir).

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

Öznitelik sözdizimi (olaylar)

Öznitelik sözdizimi özellikler yerine olayları olan üyeleri için de kullanılabilir. Buradaki özniteliðin adý olay adıdır. wpf uygulama olay için xaml, özniteliðin deðerini, o olay temsilcisinin uygulayan bir işleyici adıdır. Örneğin, aşağıdaki biçimlendirme için bir işleyici atar Click olaya bir Button işaretlemeyi oluşturulan:

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

Daha fazla olayları ve xaml wpf, yalnızca bu öznitelik sözdizimine örnek vardır. Ne örneğin veremeyebilirsiniz ClickHandler temsil eder ve nasıl tanımlandığını Burada başvurulan. Bu yakında açıklanması olaylar ve xaml oradaki Bu konu bölümünde.

Büyük/küçük harf ve alfabe dışı karakter xaml

xaml genel olarak söylemek gerekirse büyük küçük harf duyarlı. Yedekleme türleri çözümleme amacıyla, wpf xaml büyük clr büyük küçük harf duyarlı olduğunu kurallarından duyarlıdır. Nesne öğeleri, özellik öğelerinin ve öznitelik adları tüm ad derlemede arka plandaki türü veya bir türü üyesi tarafından karşılaştırıldığında önemli kasa kullanılarak belirtilmelidir. xaml dilini anahtar sözcükleri ve temel öğeler de büyük/küçük harf duyarlıdır. Değerleri her zaman büyük/küçük harf duyarlı değildir. Değerleri büyük/küçük harf duyarlılığı, değer veya özellik değeri türü özelliği ile ilişkili türü dönüştürücü davranışını bağlıdır. Örneğin, alan özellikleri Boolean türü ya da alabilir true veya True ancak çünkü doğal wpf xaml ayrıştırıcı yazın dizeye dönüştürme karşılığı değer olarak Boolean zaten verir olarak eşdeğerleri.

wpf xaml işlemciler ve serializers Yoksay veya tümünü boþluklarýný bırak ve önemli bir boşluk normalize. Bu, varsayılan boşluk davranış önerileri xaml belirtimi ile tutarlıdır. Bu davranış genellikle olan xaml içerik özellikleri içindeki dizeleri belirttiğinizde sonucu biri. Basit terimler xaml boşluk alan, satır besleme ve sekme karakterlerini dönüştürür ve sonra bir boşluk varsa korur ya da bitişik bir dize sonunda bulunan. Bu konuda ayrıntılı açıklamalar xaml boşluk işleme kapsamında değildir. For details, see XAML işlem boşluk.

Biçimlendirme uzantıları

Biçimlendirme uzantıları bir xaml dilini kavramı yer almaktadır. Bir öznitelik sözdizimi, kaşlı ayraçlar değeri sağlamak için kullanıldığında ({ ve }) gösteren bir biçimlendirme uzantısı kullanımı. Bu kullanım, öznitelik değerleri genel alınmasına bir hazır bilgi dizesi veya dönüştürülebilir dize değeri için işleme xaml yönlendirir.

Kullanılan en yaygın biçimlendirme uzantıları WPF uygulama programı olan bağlama, veri bağlama deyimlerini ve kaynak başvurular için kullanılan StaticResource ve DynamicResource. Biçimlendirme uzantıları kullanarak, bu özellik bir öznitelik sözdizimi genel desteklemiyor bile özellikleri için değerleri sağlamak için öznitelik sözdizimini kullanabilirsiniz. Biçimlendirme uzantıları Ara ifade türleri değerleri erteleniyor ya da yalnızca çalışma zamanında yok diğer nesnelere başvuran gibi özellikleri etkinleştirmek için sık sık kullanın.

Örneğin, aşağıdaki biçimlendirme ayarlar Style özelliğini kullanarak öznitelik sözdizimi. Style Özelliği örneği alır Style sınıfı, varsayılan olarak değil örneği tarafından bir öznitelik sözdizimi dize. Ancak bu durumda bir belirli biçimlendirme uzantısı özniteliðine baþvurur StaticResource. Bu işaretleme uzantısı işlendiğinde, anahtarlı bir kaynak bir kaynak sözlüğü olarak daha önce örneği oluşturulduktan bir stili bir başvuru döndürür.

<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 xaml uygulanan için bir başvuru tüm biçimlendirme uzantıları listesi için bkz: WPF XAML Ekleri. Biçimlendirme uzantıları referans listesi için System.Xaml tarafından tanımlanır ve daha yaygın olarak kullanılabilir.net Framework xaml uygulamaları görmek XAML isim uzayı (x:) Dil özellikleri. Biçimlendirme uzantısı kavramlar hakkında daha fazla bilgi için bkz: Biçimlendirme Uzantıları ve WPF XAML.

Türü dönüştürücüler

De Öznitelik sözdizimi bölümünde, öznitelik değerini bir dize ayarlanmasına izin mümkün belirtildiği. Diğer nesne türleri veya ilkel değerleri dizeler nasıl dönüştürülür, temel, özgün işleme esas String belirli türleri gibi işleme türü yerel yanında olarak kendisini DateTime veya Uri. Ancak birçok WPF türleri veya bu tip üyeleri genişletmek temel dize özniteliği işleme davranış, şekilde, daha karmaşık nesne türlerinin örneklerini belirtilebilir ve öznitelikleri.

Thickness Yapısıdır tür dönüştürmesi için etkin olan bir tür örneğixaml kullanımları. Thicknessiç içe geçmiş bir dikdörtgen içinde ölçümleri gösterir ve değer olarak gibi özellikler için kullanılır Margin. Üzerinde bir tür dönüştürücü yerleştirerek Thickness, kullandığınız tüm özellikleri bir Thickness kolaydır belirtmek xaml, çünkü bunlar belirtilebilir öznitelikleri. Aşağıdaki örnek için bir değer sağlamak için türü dönüştürme ve öznitelik sözdizimini kullanan bir 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 yerine aracılığıyla öğesi sözdizimi içeren özellik ayarlamak bir Thickness nesne öğesi. Dört anahtar özelliklerini Thickness Yeni örneğinde öznitelik olarak ayarlanır:

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

Nesne türü dönüştürme türü varsayılan bir oluşturucuya sahip olmadığından özellik türü için bir alt ilgili olmadan yalnızca ortak yolu olduğu sınırlı sayıda vardır.Örnek Cursor.

Sözdizimi desteklenir ne tür dönüştürmesi ve kullanımı için öznitelik hakkında daha fazla bilgi için bkz: TypeConverters ve XAML.

xaml kök öğeleri ve xaml ad alanları

xaml dosyasına, yalnızca bir kök öğesi, hem bir düzgün olabilmesi için gereken XML Dosya ve geçerli bir xaml dosya. Tipik wpf senaryoları için wpf uygulama modelinde belirgin bir anlam bir kök öğesi kullanın (örneğin, Window veya Page bir sayfa için ResourceDictionary harici bir sözlük için veya Application uygulama tanımı). Aşağıdaki örnek için tipik bir xaml dosyasının kök öğesi gösterir bir WPF kök öğesi içeren bir sayfa Page.

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


...


</Page>

Kök öğenin özniteliklerini de içerir xmlns ve xmlns:x. xaml ad alanlarını biçimlendirme öğeleri olarak başvuracağı türlerini yedekleme için tür tanımları içeren bir xaml işlemciye bu öznitelikleri belirtin. xmlns Özniteliği özellikle gösterir varsayılan xaml ad. Varsayılan xaml ad alanı içinde nesne öğelerini biçimlendirme bir önek belirtilebilir. Çoğu WPF uygulama senaryoları ve neredeyse tüm verilen örnekler WPF bölümlerini SDK, varsayýlan xaml ad eşleştirilir WPF ad https://schemas.microsoft.com/winfx/2006/xaml/presentation. xmlns:x Özniteliği bir ek xaml ad, xaml dilini ad eşlemeleri gösterir https://schemas.microsoft.com/winfx/2006/xaml.

Bu kullanımı xmlns kullanımı ve bir namescope eşleme için bir kapsam tanımlamak için tutarlıxml 1.0 belirtimine. Yalnızca bir xaml namescope de çözünürlüğü ve xaml ayrıştırma geldiğinde namescope's öğeleri türlerine göre nasıl yedeklenebilmesini hakkında bir şey anlaşılacağı, xaml namescopes xml namescopes ' farklıdır.

Unutmayın xmlns öznitelikleri yalnızca kesinlikle gerekli kök öğesinde her xaml dosyasına gidin. xmlnstanımları, kök öğesinin tüm alt öğeler için uygulanır (Bu davranışı yeniden için xml 1.0 belirtimine ile tutarlı xmlns.) xmlns öznitelikleri de kök altındaki diğer öğelere izin verilir ve uygulamak için herhangi bir alt öğe tanımlayan öğe. Ancak, sık sık tanım veya şemadaki xaml ad alanlarının okunması zor olan bir xaml biçimlendirme stili sonuçlanabilir.

WPF , xaml işlemci uygulaması bilincini sahip bir altyapı içerirwpf çekirdek derleme. WPF Çekirdek derleme bilinen destekleyen türleri içeren WPF eşlemelerini varsayılan xaml ad. Bu proje oluþturma parçası olan yapılandırma aracılığıyla etkin dosya ve wpf oluşturmak ve proje sistemleri. Bu nedenle, varsayılan olarak varsayılan xaml ad bildirmek xmlns tüm başvurusu xaml öğeleri, gelir sağlamak için gerekli olan WPF derlemeler.

X: Önek

Önceki örnekte kök öğesi, önek x: kullanıldı xaml ad eşleştirme https://schemas.microsoft.com/winfx/2006/xamlolduğundan ayrılmış xaml ad destekleyen xaml dil yapıları. Bu x: eşleştirme projeleri için şablonlar, örnekler ve bu belgeleri bu xaml ad alanı önek kullanýlmadan SDK. xaml dili xaml ad alanını sizin xaml çok sık kullanacağınız çeşitli programlama yapılarını içerir. En yaygın bir listesi aşağıda verilmektedir x: kullanacağınız programlama yapılarını önek:

  • x:Key: Her kaynak için benzersiz bir anahtar ayarlar bir ResourceDictionary (ya da diğer frameworks benzer sözlüğü kavramlar). x:KeyHesap % 90 için büyük olasılıkla olur x: kullanımları göreceğiniz tipik bir wpf uygulamanın işaretleme.

  • x: Class: Belirtir CLR sınıfın arka planda bir xaml sayfasına sağlar ad ve sınıf adı Arkadaki kod başına wpf programlama modelini destekleyen bir böyle bir sınıf olması ve bu nedenle, neredeyse her zaman görmek x: eşlenmiştir bile var. hiçbir kaynakları

  • x: adı: Bir object öğesini işlendikten sonra çalıştırma kodu var örnek çalışma zamanı nesne adını belirtir. Genel olarak, sık sık bir wpf tanımlanan eşdeğer özelliği için kullanacağınız X: adı. Bu tür özellikler yedekleme özelliği bir clr özellikle eşleştirmek ve dolayısıyla burada sık çalıştırma kodu başlatılan xaml adlandırılmış öğeleri bulmak için kullandığınız uygulama programlama için daha uygun. En sık karşılaşılan böyle bir özellik olan FrameworkElement.Name. Yine de kullanabilir X: adı zaman eşdeğeri wpf framework düzeyinde Name belirli bir türü. özelliği desteklenmiyor Bu, animasyonun belirli senaryolarda ortaya çıkar.

  • x: statik: Aksi takdirde bir xaml ile uyumlu özelliği değil statik bir değer döndüren bir başvuru sağlar.

  • x: yazı: Yapıları bir Type başvuru esas alan bir tür adı. Bu ele öznitelikleri belirtmek için kullanılır Type, gibi Style.TargetType, sık sık yerel dize özelliği sahip olsa da-için-Type şekilde dönüştürme, X: yazı işaretleme uzantısı kullanımı isteğe bağlıdır.

Ek yapıları içinde programlama vardır x: önek/xaml ad olduğu olarak değil ortak. For details, see XAML isim uzayı (x:) Dil özellikleri.

Özel önekleri ve xaml özel türleri

Kendi özel derlemeler veya wpf çekirdeği, PresentationCore, PresentationFramework ve WindowsBase dışında derlemeler derleme özel bir parçası olarak belirtebileceğiniz xmlns eşleme. Türü doğru çalıştığınız xaml kullanımı desteklemek için uygulanan sürece, sonra türleri, bu montaja, xaml, başvuruda bulunabilir.

xaml biçimlendirme nasıl özel önekleri iş çok basit bir örnek verilmektedir. Önek custom kök öğe etiketinde tanımlanan ve eşlenen derlemesine bir özel paket ve kullanılabilir uygulama. Bu derleme türü içeren NumericUpDown, genel xaml kullanım olarak kullanarak, ekleme noktasında bu belirli izin veren bir sınıf mirası desteklemek için gerçekleştirilirbir wpf xaml içerik modeli. Bu örneği NumericUpDown Denetim, bir object öğesini xaml ayrıştırıcı bilir hangi xaml ad alanı türünü içerir böylece önekini kullanarak olarak bildirilmiş ve bu nedenle yedeklemeyi derleme olduğu içeren türü tanımı.

<Page
    xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="https://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: WPF için XAML ve Özel Sınıflar.

xml ad boşlukları ve derlemeler yedekleme kod ad alanlarını nasıl ilişkilendirildiğini hakkında daha fazla bilgi için bkz: WPF XAML İçin XAML Ad Uzayları ve Ad Uzayı Eşlemesi.

Olaylar ve xaml arkadaki kod

Çoğu WPF uygulamaları, xaml işaretleme ve kodu oluşur-arkada. Bir projede, xaml olarak yazılır bir .xaml dosyası ve bir CLR gibi dil Microsoft Visual Basic veya C# atılması bir arka planda dosya için kullanılır xaml dosya biçimlendirme wpf programlama ve uygulama modelleri bir parçası olarak derlenmiş, xaml oradaki konumunu bir xaml dosyasına bir ad belirterek tanımlanır için dosya ve olarak sınıf x:Class özniteliği kök öğesinin xaml.

Örnekler için şimdiye kadar birçok düğme gördünüz, ancak bu düğmelerin hiçbiri henüz kendileriyle ilişkilendirilmiş mantıksal bir davranışı vardı. Nesne öğesi için davranış eklemek için birincil uygulama düzeyinde öğe sınıfının varolan bir olayını kullanın ve zamanında bu olay oluştuğunda çağrılır o olay için belirli bir işleyici yazmak için mekanizmasıdır. Arkadaki kod içinde sizin işleyicisi uygulayan kod tanımlanır ama olay adı ve kullanılacak işleyicinin adını İşaretlemede belirtilir.

<Page 
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="ExampleNamespace.ExamplePage">
  <Button Click="Button_Click" >Click Me!</Button>
</Page>
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
namespace ExampleNamespace
{
  public partial class ExamplePage
  {
    void Button_Click(object sender, RoutedEventArgs e)
    {
      Button b = e.Source as Button;
      b.Foreground = Brushes.Red;
    }
  }
}

Arka planda dosya clr ad kullanan bildirimi ExampleNamespace bildirir ve ExamplePage olarak kısmi bir sınıf içinde o ad alanı. Bu parallels x:Class öznitelik değeri ExampleNamespace.ExamplePage kaydıyla işaretleme kök. wpf işaretleme derleyici kök öğe türünden bir sınıf türetmek tarafından derlenen herhangi bir xaml dosyası için kısmi bir sınıf oluşturacaksınız. Aynı kısmi sınıfı tanımlayan oradaki sağladığınızda, sonuç kodunu aynı ad alanı ve derlenen uygulama sınıfı içinde birleştirilir.

"Oradaki olay işleyicisi ve kısmi sınıfta gereksinimleri" wpf arka planda programlamada gereksinimleri hakkında daha fazla bilgi için bkz: kısmında Arka Plan Kodu ve WPF içindeki XAML.

Ayrıca, ayrı arkadaki kod dosyası oluşturmak istemiyorsanız, satır içi kodunuzu bir xaml dosyasında yapabilirsiniz. Ancak, satır içi önemli sınırlamalar vardır az çok yönlü bir teknik kodudur. For details, see Arka Plan Kodu ve WPF içindeki XAML.

Yönlendirilmiş olayları

Belirli bir olay özelliği için temel olan WPF olan bir olay yönlendirmeli. Olayları etkinleştir öğelerini bir ağaç ilişkisi bağlı olarak farklı bir öğe tarafından Sürüldü bir olayı işlemek için bir öğe yönlendirilir. Olay işleme xaml özniteliğiyle belirtirken, yönlendirilmiş olay için dinledik ve belirli bir olay sınıfı üyeler tablosunda listelemez öğeler dahil olmak üzere herhangi bir öğe üzerinde ele. Bu olay adı özniteliği sahibi olan sınıf adıyla niteleme tarafından gerçekleştirilir. Örneğin, üst StackPanel sürekli olarak StackPanel / Button örnek bir alt öğe düğmesinin işleyicisi kaydetmek Click olay özniteliği belirterek Button.Click üzerinde StackPanel nesne öğeyle işleyicisi adınız olarak öznitelik değeri. Nasıl yönlendirilmiş olayları çalışma hakkında daha fazla bilgi için bkz: Yönlendirilmiş Olaylara Genel Bakış.

Öğeleri adlı xaml

Varsayılan olarak, bir benzersiz tanımlayıcı veya nesne başvurusu bir nesne grafiğinde bir xaml object öğesini işleme tarafından oluşturulan nesne örneğinin sahip değil. Kodda bir kurucu çaðýrýrsanýz, böylece daha sonra kodunuzda örnek başvuru aksine, hemen her zaman yapıcı sonucu bir değişken oluşturulmuş örneğine ayarlamak için kullanın. Biçimlendirme tanımı ile oluşturulan nesneler için standartlaştırılmış bir erişim sağlamak için xaml tanımlar x: Name özniteliği. Değerini ayarlayabilirsiniz x:Name özniteliği herhangi nesne öğesi. Sizin arkadaki kod içinde seçtiğiniz tanımlayıcı oluşturulmuş örneğine başvuruda bulunan bir örnek değişkenini eşdeğerdir. Tüm açılardan öğelerin (Bu örnek adına başvuran) nesne örnekleri oldukları ve sizin arkadaki kod çalıştırma etkileşimler uygulama içinde işlemek için adlandırılmış öğeleri başvurabilir adlı. Bu bağlantı örnekleri ve değişkenler arasındaki wpf xaml işaretleme derleyici tarafından gerçekleştirilir ve daha özellikle özellikleri ve desenleri gibi ilgili InitializeComponent , açıklanmayan ayrıntılı olarak bu konuda.

wpf framework düzeyinde xaml öğeleri devralan bir Name özelliği, tanımlanan xaml eşdeğer olduğu x:Name özniteliği. Belirli bir sınıf özelliği düzeyi eşdeğerinin de sağlayan x:Name, de genellikle tarifelerinin uygulandığı gibi bir Name özelliği. Bulamazsanız, genellikle, konuşmayı bir Name özelliği üyeler tablosunda seçilen öğe/türünüzü, kullanım için x:Name bunun yerine. x:Name Değerlerini çalıştırma sırası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.

Aşağıdaki örnek ayarlar Name üzerinde bir StackPanel öğesi. Daha sonra bir işleyici bir Button , içinde StackPanel başvuruları StackPanel örnek başvuru yoluyla buttonContainer tarafından belirlenen Name.

<StackPanel Name="buttonContainer">


...


  <Button Click="RemoveThis">Click to remove this button</Button>
</StackPanel>
 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
void RemoveThis(object sender, RoutedEventArgs e)
{
    FrameworkElement fe = e.Source as FrameworkElement;
    if (buttonContainer.Children.Contains(fe))
    {
        buttonContainer.Children.Remove(fe);
    }
}

Adları önceden kestirilebilir bir belirli kapsamı içinde benzersiz olarak uygulanabilmesi için yalnızca bir değişken, bir örneği için xaml ad kapsamı, bir kavramı tarafından tabidir. Bir sayfayı tanımlayan birincil işaretleme xaml namescope sınır o sayfanın kök öğesi olan benzersiz bir xaml namescope gösterir. Ancak, diğer biçimlendirme kaynakları stilleri veya Şablonlar stilleri içinde gibi çalışma zamanında bir sayfayla etkileşim kurabilir ve işaretleme kaynaklardan çoğunlukla mutlaka sayfa xaml namescope ile bağlamayın, kendi xaml namescopes. Daha fazla bilgi için x:Name ve xaml namescopes Name, x: ad yönergesi, veya WPF XAML Ad Kapsamları.

Eklenen özellikler ve ekli olaylar

xaml belirli özellikler ya da özellik veya olay üzerinde ayarlı öğesinin türünün tanımlarındaki varolup bakılmaksızın herhangi bir öğe, belirtilecek olayları sağlayan bir dil özellik belirtir. Bu özellik özellikler sürümünü adlı bir bağlı özellik, olayları sürüm adı verilen bir olay bağlı. Kavramsal olarak eklenen özellikler ve ekli olaylardan, tüm xaml öğesi/nesne örneğinde ayarlanabilir genel üye olarak düşünün. Ancak, o öğe veya sınıf ya da daha büyük bir altyapı yedekleme özellik deposu için eklenen değerleri desteklemesi gerekir.

xaml eklenen özellikleri ile öznitelik sözdizimi kullanılır. İliştirilmiş bir özellik formunda belirttiğiniz öznitelik sözdiziminde, ownerType.propertyName.

Superficially, bu özellik öðe kullanýmý benzer, ancak bu durumda ownerType belirttiğiniz ise her zaman object öğesini dışında farklı bir tür burada ekli özelliği ayarlı. ownerType Al veya bağlı özellik değerini ayarlamak için xaml işlemcisi tarafından gerekli erişimci yöntemleri sağlar türüdür.

Eklenen özellikleri için en yaygın senaryo, kendi üst öğeye bir özellik değeri bildirmek alt öğeleri etkinleştirmektir.

Aşağıdaki örnekte gösterilmektedir DockPanel.Dock bağlı özellik. DockPanel Sınıfı tanımlar erişimcileri için DockPanel.Dock ve bu nedenle sahibi iliştirilmiş bir özellik. DockPanel Sınıfını da içerir mantığı alt öğeleri sırayla dolaşır ve özellikle, her öğe için bir set değeri denetler DockPanel.Dock. Bir değer bulunursa, bu değer Düzen sırasında alt öğeleri konumlandırmak için kullanılır. Kullanımı DockPanel.Dock bağlı özellik ve bu konumlandırma yeteneği olan aslında motivating senaryosu DockPanel sınıfa

<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>

De WPF, çoğu veya tümü bağlı özelliklerini de olarak uygulanan Bağımlılık Özellikleri. For details, see Ekli Özelliklere Genel Bakış.

Ekli events kullanmasına benzer bir ownerType.eventName öznitelik sözdizimi şeklidir. Yalnızca ekli olmayan olayları gibi öznitelik değerini xaml ekli bir olay için olay öğesinde gerçekleştirilirken çağrılır işleyicisi yöntemi adını belirtir. wpf xaml, bağlanmış olay kullanımları daha az yaygındır. For more information, see Ekli Olaylara Genel Bakış.

Temel türler ve xaml

Alttaki wpf xaml ve onun xaml namespace topluluğudur karşılık gelen türlere CLR nesnelere ek olarak iþaretleme öðeleri için xaml. Ancak, tüm sınıflar için öğeleri eşlenebilir. Sınıflar gibi soyut ButtonBase, ve nonabstract bazı temel sınıflar kalıtım için kullanılan CLR nesne modeli. Beton xaml öğelerinden her üye kendi hiyerarşisi içindeki bazı temel sınıf devraldığı soyut olanlar da dahil olmak üzere temel sınıflar, xaml geliştirme için hala önemlidir. Bu üyeler genellikle öğesinde öznitelik olarak ayarlanabilir özellikleri veya işlenebilir olayları içerir. FrameworkElementbeton taban UI sınıfı WPF en wpf framework düzeyi. Tasarlarken UI, çeşitli şekil, panel, decorator, kullanmak veya sınıflar, tüm türetmek kontrol FrameworkElement. İlgili temel sınıfı FrameworkContentElement, iyi bir akış düzeni sunu için belge odaklı ve çalışma öğeleri destekler kullanarak APIs , kasıtlı yansıtmak APIs , FrameworkElement. Öznitelikleri öğesi düzeyinde birleşimi ve bir CLR nesne modeli, belirli xaml öğesi ve ne olursa olsun en somut xaml öğelerde ayarlanabilir ortak özellikler kümesiyle sağlaralttaki kendi türü.

XAML Security

xaml doğrudan Nesne Örneğini Oluşturmada ve yürütme gösteren bir biçimlendirme dilidir. Bu nedenle, xaml içinde oluşturulan öğeleri (ağ erişimi, dosya sistem g/Ç, örneğin) sistem kaynakları ile oluşturulan eşdeğer olarak etkileşimde bulunmak için aynı sahipsiniz kodu yapar.

WPFdestekleyen .NET Framework 4 güvenlik çerçevesi Code Access Security (CAS). Yani WPF içeriği Internet bölgesinde çalışan sınırlı yürütme izinleri. " Bağımsız xaml" (noncompiled xaml sayfalarını yük zaman yorumlanan bir xaml İzleyici tarafından) ve XAML browser application (XBAP) Bu Internet bölgesinde genellikle olarak çalıştırılır ve kullanın aynı izin kümesi. Ancak, barındırma uygulama yaptığı gibi xaml, tam güvenilir bir uygulama yüklenmiş aynı sistem kaynaklarına erişimi vardır. For more information, see WPF Kısmi Güven Güvenliği.

xaml kodunu yükleme

xaml tüm kullanıcı Arabirimi tanımlamak için kullanılan, ancak bazen de UI yalnızca bir parçası xaml tanımlamak uygundur. Bu yetenek, kısmi özelleştirme, bilgi, bir iş nesnesi ya da çeşitli olası senaryoları sağlamak için xaml kullanılarak yerel depolama sağlamak için kullanılabilir. Bu senaryolar anahtar XamlReader sınıfı ve onun Load yöntemi. Giriş bir xaml dosyasıdır ve çıktı tüm nesnelerin bu biçimlendirmeleri oluşturulduğu çalışma zamanı ağacının gösteren bir nesnedir. Sonra uygulamada zaten başka bir nesnenin bir özelliği nesne ekleyebilirsiniz. Özelliği içerik modelinde ileride görüntüleme yetenekleri olan ve yeni içerik uygulamasına eklenmiştir, yürütme alt yapısı bildirir uygun bir özellik olduğu sürece, çalışan bir uygulamanın içeriği çok kolayca yüklenmesi xaml de değiştirebilirsiniz. Bu özellik genellikle yalnızca çalışırken bunların dosyaları uygulamalara yükleniyor belirgin güvenlik üzerindeki etkileri nedeniyle tam güven uygulamalarında kullanılabilir olduğunu unutmayın.

What's Next

wpf için geçerlidir bu konuda xaml sözdizimi kavramları ve terminolojiyi temel bir giriş sağlar. Burada kullanılan terimler hakkında daha fazla bilgi için bkz: Ayrıntılı XAML Sözdizimi.

Eğitmen konuya alıştırmalarda, henüz bunu yapmadıysanız, deneyin İzlenecek Yol: WPF Kullanmaya Başlarken. Eğitmen tarafından açıklanan işaretleme merkezli uygulama oluşturduğunuzda, alıştırma çoğu bu konuda açıklanan kavramlar güçlendirmek yardımcı olur.

WPFtemel alan bir özel uygulama modeli kullanır Application sınıfa For details, see Uygulama Yönetimine Genel Bakış.

WPF Uygulaması Oluşturma (WPF)xaml (dahil) uygulamaları ile ve komut satırından oluşturma hakkında daha fazla ayrıntı verir Microsoft Visual Studio.

Bağımlılık Özellikleri Genel Bakışözellik çok yönlülük hakkında daha fazla bilgi almanızı WPF, kavramını tanıtır ve Bağımlılık Özellikleri.

Ayrıca bkz.

Kavramlar

Ayrıntılı XAML Sözdizimi

WPF için XAML ve Özel Sınıflar

Temel Öğelere Genel Bakış

WPF içinde ağaçlar

Diğer Kaynaklar

XAML isim uzayı (x:) Dil özellikleri

WPF XAML Ekleri