ラベル XAML の投稿を表示しています。 すべての投稿を表示
ラベル XAML の投稿を表示しています。 すべての投稿を表示

2013年1月8日火曜日

[C#] KeyedCollection を使って拡張可能な Dictionary を作ってみる

お久しぶりです。 今回も .NET Framework のお話です。

XAML 系テクノロジを使って UI を作成していると、 INotifyPropertyChanged や INotifyCollectionChanged インターフェイスの実装が重要になってきます。
これらを実装しないと ViewModel から View へ変更の通知ができませんから。

そこで時々、INotifyCollectionChanged を実装した Dictionary が欲しくなるんです。


通常の Collection であれば、 System.Collections.ObjectModel.ObservableColleciotn<T> というクラスが用意されているのですが、
残念ながら ObservableDictionary<TKey, TValue> なんてクラスは用意されていません。。

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