2012年8月5日日曜日

XAMLを使っていて気づいたこと

全くBazaarの記事を更新していないのですが。
久々の記事で、XAMLの話題です。

よく見かけるこんなソース
<Grid>
  <TextBlock Text="{Binding Hoge, Mode=OneWay}" />
</Grid>
なんの疑問もなく使っていて、こういう構文なんだなあと思っていたのですが、
実はこういう書き方もできるみたいです。
<Grid>
  <TextBlock>
    <TextBlock.Text>
      <Binding Path="Hoge" Mode="OneWay" />
    </TextBlock.Text>
  </TextBlock>
</Grid>

"{}"を使った構文は短縮形だったんですねぇ!

追記 2012/08/14

これ、マークアップ拡張(Markup extensions)って言うんですね。

MSDN - マークアップ拡張機能と XAML
http://msdn.microsoft.com/ja-jp/library/ms747254(v=vs.80).aspx

BindingやStaticResource、x:Type、x:Static などはこうの仕組みを使っているんですね。

ちなみに、自分でマークアプ拡張を定義することもできるそうです。

かずきのBlog - [C#][WPF]マークアップ拡張の作り方
http://blogs.wankuma.com/kazuki/archive/2008/03/30/130476.aspx