わわわわわわ わわわわわ #18 How To WPF わわわわわわわわ Part4 By わわわ
Jan 03, 2016
わんくま同盟 東京勉強会 #18
How To WPFアプリケーション
Part4By 中博俊
わんくま同盟 東京勉強会 #18
WPF とは
• いちおう Windows Vista 向けに出荷された .NET3.0 で、初搭載された Windows クライアントプログラムの一形態
• 現在の最新バージョンは 3.5• いちおう Windows Forms の置き換え• クライアントの表現を豊かにしてくれるツール
としてこれから期待しています。• XAML というもので UI を記述することができ
ます。• Silverlight でも XAML を使います。
わんくま同盟 東京勉強会 #18
おさらい
• 第1回は Button と TextBox を使った簡単なアプリケーションの作り方でした。
• WPF アプリケーションは Document-Viewとして完全に UI とドキュメントを分けて考えましょう。
• そして INotifyPropertyChanged のインターフェイスを究めようという内容でした。
• NotifyPropertyChangedBase は今回も出てきますのでおさらい
わんくま同盟 東京勉強会 #18
NotifyPropertyChangedBase
public class NotifyPropertyChangedBase : INotifyPropertyChanged {
public event PropertyChangedEventHandler PropertyChanged;
protected void FirePropertyChanged(
string PropertyName) {
if (this.PropertyChanged != null) {
this.PropertyChanged(this,
new PropertyChangedEventArgs(PropertyName));
}
}
}
わんくま同盟 東京勉強会 #18
おさらい
• 第2回はコンバータと、ラジオボタンの制御についてでした。
• コンバータは IValueConverter を使い、 Convert と ConvertBack を用意するというところを解説しました。
• 第 3 回はコンボボックスを使い Ancestorを使い Visual Tree をちょっとだけ操作してみました。
わんくま同盟 東京勉強会 #18
今回のアジェンダ
• ListView–一覧を表示しよう–ソートしよう–編集しよう–レコード追加しよう–データグリッドなくてもいいよね?
わんくま同盟 東京勉強会 #18
ListView とは
• 一覧を表示する• アイコンモード、詳細モー
ドなどがある• エクスプローラのあれ
• でも WPF の Listview にはラージアイコンなどはまだ ?実装されていない。
Windows Forms
わんくま同盟 東京勉強会 #18
DEMO のデータたち(前回と同じ)
Intstring
ISO5218 準拠
わんくま同盟 東京勉強会 #18
DEMO2 のデータたち
public class Document : NotifyPropertyChangedBase {
public Row[] rows {
get { return _rows; }
set { _rows = value; }
}
private Row[] _rows = new Row[]
{
new Row(){ 名前 =" なか ", 年齢 = 32, 性別 = 性別 Enum. 男 },
new Row(){ 名前 =" えムナウ ", 年齢 = 21, 性別 = 性別 Enum.男 },
new Row(){ 名前 ="R 田中 ", 年齢 = 18, 性別 = 性別 Enum. シラネ }
};
}
わんくま同盟 東京勉強会 #18
DEMO1
わんくま同盟 東京勉強会 #18
ListView
• 幅を変更するのもできます。
• セルの順番が勝手に入れ替えられる可能性を考慮してください。( というか無関心でいられるかがポイント )
わんくま同盟 東京勉強会 #18
ソートくらいつけましょ
DEMO2
わんくま同盟 東京勉強会 #18
• WPF はコンテンツが置けるところ何でも差し替え可能です。
• しかもこの GridView にはテンプレート機能が・・・
DEMO3
わんくま同盟 東京勉強会 #18
わんくま同盟 東京勉強会 #18
ObservableCollection<T>
• いままでデータソースには Row[] を使ってました。
private Row[] _rows = new[]
{
new Row { 名前 =" なか ", 年齢 = 32, 性別 = 性別 Enum. 男 },
new Row { 名前 =" えムナウ ", 年齢 = 21, 性別 = 性別 Enum. 男 },
new Row { 名前 ="R 田中 ", 年齢 = 18, 性別 = 性別 Enum. シラネ }
};
でもこれお勧めできません。ObservableCollection<T> を使いましょう
わんくま同盟 東京勉強会 #18
ObservableCollection<T>
• ObservableCollection<T> はINotifyCollectionChanged を実装しています。
• INotifyCollectionChanged はINotifyPropertyChanged のコレクション版です。
• データが増えたりすると、通知をあげてくれます。
わんくま同盟 東京勉強会 #18
DEMO4
わんくま同盟 東京勉強会 #18
• ListView カッコいいでしょ?• これさえあれば DataGrid も GridView も
イラネ
• と思っていたのですが、夏ごろに追加されるかもだそうです。
• まだまだ WPF 関連から目が離せませんね。 Enjoy WPFEnjoy WPF