1361511 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

パソコン王者

パソコン王者

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

Recent Posts

Free Space

Apr 5, 2017
XML
カテゴリ:カテゴリ未分類
この記事はこちらに綺麗にまとめ直しました。

WPFのデータバインディング感覚が身につかなくて苦労しています。そんな中でこのサイトはとても参考になりました。

http://blog.okazuki.jp/entry/2014/10/29/220236

自分なりに落とすため、上記サイトを参考に分からない単語を調べながらコードを書いたら動きました。何となくわかった気になったので調べた事をメモします。

ObservableCollection クラス

https://msdn.microsoft.com/ja-jp/library/ms668604.aspx

項目が追加または削除されたとき、あるいはリスト全体が更新されたときに通知を行う動的なデータ コレクションを表します。

つまり、ObservableCollectionをしていしておけば、C#内でプロパティソース値を変更したものがXAML上のターゲット値に反映される。使用するデータは、オブジェクトのコレクションになる。

IEnumerable インターフェイス

https://msdn.microsoft.com/ja-jp/library/9eekhta0(v=vs.110).aspx

指定した型のコレクションに対する単純な反復処理をサポートする列挙子を公開します。コレクションのデータバインディングは、IEnumerableを実装していればどれでも対象になる。

INotifyCollectionChanged インターフェイス

https://msdn.microsoft.com/ja-jp/library/system.collections.specialized.inotifycollectionchanged(v=vs.110).aspx

項目が追加、削除された場合やリスト全体がクリアされた場合など、動的な変更をリスナーに通知します。IEnumerableインターフェースを実装し、さらにINotifyCollectionChangedインターフェースを実装しているコレクションは追加・削除などの変更操作をデータバインディングのターゲットと同期する事ができます。

XAML


<ListBox.ItemTemplate>






</ListBox.ItemTemplate>





C#

private ObservableCollection people;
public MainWindow()
{
InitializeComponent();
// DataContextにPersonのコレクションを設定する
this.people = new ObservableCollection(Enumerable.Range(1, 100)
.Select(x => new Person
{
Name = "tanaka" + x,
Age = (30 + x) % 50
}));
this.DataContext = people;
}

public class Person
{
public string Name
{
get;
set;
}

public int Age
{
get;
set;
}
}

private void button_Click(object sender, RoutedEventArgs e)
{
// コレクションに要素を追加する。
this.people.Insert(0, new Person { Name = "追加したtanaka", Age = 100 });
}

private void button1_Click(object sender, RoutedEventArgs e)
{
// 全削除
this.people.Clear();
}





お気に入りの記事を「いいね!」で応援しよう

Last updated  Apr 8, 2017 06:10:15 AM
コメント(0) | コメントを書く



© Rakuten Group, Inc.
X