WPF_XAMLの基本文法

XAML(Extensible Application Markup Language)について

XAMLについて

XAMLは、WPFアプリケーションを記述するための XML フォーマットです。

発音的には「zamel」と読んでくれと周知しているらしいが、日本では「ザムル」と多くの場合と呼びます。



   <UserControl x:Class="WpfDevelop.UserControl1"
                xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                xmlns:local="clr-namespace:WpfDevelop"
                mc:Ignorable="d" 
                d:DesignHeight="450" d:DesignWidth="800">
       <Grid>
           <TextBlock Text="XAML"/>
       </Grid>
   </UserControl>


文字コードについて

XAMLは「UTF-8」で記述する必要があります。


ファイル拡張子について

XAMLファイルは「.xaml」の拡張子を使います。


XAML 名前空間

XAML 名前空間は、XML 名前空間の概念の拡張です。

XAMLで使用される名前空間は、XML名前空間(xmlns)宣言を使用します。


WPF の既定の名前空間

最上位はWPF の既定の名前空間です。


   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

x プレフィックス

xmlns:プレフィックスの形式で参照を設定します。

x: プレフィックスは、WPF アプリケーションに必要なよく使用される多くの機能を定義する名前空間を参照するための定義です。


   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

mc

mc:Ignorable名前空間は、xamlプロセッサによって「無視」されるxaml定義を提供します。

名前空間のエイリアス mc によって、エイリアス d による設定は無視するという意味です。


   mc:Ignorable="d" 

アセンブリの指定


   xmlns:プレフィックス="clr-namespace:名前空間;assembly=アセンブリ名"

XAMLの基本構造

プロパティ

XAML では、XML の属性として「プロパティ」の値を設定できます。

テキストブロックのプロパティとして、下記のような設定ができます。


   <TextBlock Text="XAML" HorizontalAlignment="Center" VerticalAlignment="Center" Background="Aqua"/>

コンテントプロパティ(content property)

XAMLでは基本的にプロパティを明示して値を設定しますが、クラスにコンテンツプロパティが指定されている場合に限りプロパティ名を省略して記述できます。

(System.Windows.Markup.ContentPropertyAttribute属性で指定されます)

下記例ではTextBlock.Textを省略しています。


   <TextBlock>
       This text is ContentPropertyAttribute.
       <TextBlock.HorizontalAlignment>Center</TextBlock.HorizontalAlignment>
       <TextBlock.VerticalAlignment>Center</TextBlock.VerticalAlignment>
       <TextBlock.Background>Aqua</TextBlock.Background>
   </TextBlock>

関連ページ