2014年1月10日金曜日

第2回 xamlの勉強

今日は2時間位xamlの勉強を頑張った。

詰まった所を備忘録的に書きます。



一つ目がxamlとC#の変数との関連付けについてで、dataGridをコレクションと紐付けていたが、
コレクションを変更してもViewの方が変更されず詰まった。

原因はObservableCollectionを利用していたのだが、ObservableCollectionにはコレクションのアイテムの中身を変更してもViewへの通知がされないということだった。ObservableCollectionのレコード(1行)に対して、挿入、削除、置換えを行った場合にのみViewへの通知が行われる。
また、置き換えにも一応の注意点があり、以下のような書き方は失敗する。
var tmp = ObservableCollectionData[2];
tmp = 5;
ObservableCollectionData[2] = tmp;
原因はObservableCollectionData[2]の先頭アドレスが書き換えられないためだと思われる。

下記のように書くと成功する
var tmp = new ObservableCollection( ObservableCollectionData[2]);
tmp = 5;
ObservableCollectionData[2] = tmp;

参考にしたページは以下です。
http://smdn.jp/programming/netfx/collections/3_objectmodel_2_observablecollection/



もう一つが終了処理についてで、まだ解決しきれていない。
アプリケーションの終了時にファイルにデータを保存するにしたい。WindowクラスにあるClosedイベントを呼び出すことで、終了時に発生するイベントを捕まえることは出来るようになった。
参考にしたページh下記です。
http://simplestar.syuriken.jp/lesson/047_WPFAppStep1.html


現在はClosedイベントを呼び出したMainWindow(View)からMainViewModel(ViewModel)へのアクセスの仕方がまだ、よくわからない。xamlで宣言している以上MainWoindowから読み出せると思うのだけど。

そんな感じでした。思った以上に進まない(T_T) 
黄にしたら負けだね。一歩ずつ進めます。

上記は私の私見ですので、間違ったことを書いているかもしれません。
ご指摘板だければ、可能な限り修正致します。


では!!!