2016/08/03

xaml基礎

xamlとは

xaml(eXtensible Application Markup Language)は
xml(eXtensible Markup Language)を拡張したファイル形式です
xmlはhtmlのようなツリー構造をテキストで表現するファイル形式です
htmlとJavaScriptのような関係で xamlとC#等でプログラムを作る際に見た目の記述に使います

詳しい説明は他のサイトを見て頂くとして 簡単に説明します

xamlはひとつだけ要素を持ちます(ルート要素)

<要素></要素>
がひとつの塊です

要素は中身を持つことが出来ます(子要素)

<要素>何か</要素>

中身を持っていない場合
<要素></要素>

<要素/>
と省略できます

子供の子供の...と深くすることが出来ます

<要素>
    <子要素>
        <孫要素/>
    </子要素>
</要素>

内側より先に外が終わることは出来ません

<要素>
    <子要素>
        <孫要素>
    </子要素>
        <孫要素/>
</要素>
  NG

子要素を複数持てるものがあります(持て無いものもあります)

<要素>
    <子要素>
        <孫要素/>
        <孫要素/>
    </子要素>
    <子要素/>
</要素>

要素は属性を持てます 属性は「=””」で値を指定します

<要素 属性1="値" 属性2="値" 属性3="値"/>

改行や複数の空白は無視されます

<要素 属性1="値"
       属性2="値">
    <子要素>
        <孫要素/>
    </子要素>
</要素>

<要素 属性1="値" 属性2="値"><子要素><孫要素/></子要素></要素>
は同じです

<!-- -->で囲われた部分はコメントになり無視されます

<要素>
    <!--コメント-->
    <子要素/>
</要素>

しかしコメントも要素の一種なので「<>」の中には書けません
<要素 属性1="値"
<!--コメント-->
"属性2="値"/>
NG

属性を「<要素.属性>」として子要素にすることが出来ます

<要素 属性="値"/>

<要素>
    <要素.属性>値</要素.属性>
</要素>
は同じです

実は子要素を持つというのは 要素ごとに決まっている既定属性値に入れているということです
実例を出します
<TextBlock>
    zeKey
</TextBlock>
は子要素として文字列「zeKey」を持っています TextBlock の 既定属性は Text なので
<TextBlock Text="zeKey"/>
と同じ意味になります

<TextBlock>
     <TextBlock.Text>
        zeKey
    </TextBlock.Text>
</TextBlock>
と展開することも出来ます この場合ただ長くなっただけで無意味ですが

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
</Grid>
のように属性値を複数持てる属性を指定する場合に使います

値はすべて文字列です

しかしxamlを読み込む段階で自動で変換されます
<TextBlock Width="100"/>
100は数値に変換されます

ですが属性が期待している値に 変換できないような値は 当然エラーになります
<TextBlock Width="テキストブロック"/>
NG

要素 属性は大文字小文字を区別します

<Textblock width="100"/>
NG

0 件のコメント :

コメントを投稿