ゼロから始めるC#生活 その3 よくわからなくてもとりあえずWPF

とりあえず分からなくても実践あるのみってことでC#三回目ではWPFの基本まわり。
まずはボタン押すのと、リストボックスに表示したり単純に追加したりできればいいやってことで試してみました。

そもそもWPFとはなんぞ?というと、
Windows Presentation Foundation
の略で、UIとロジックを切り分けて構築できる新しい(といっても結構前からあるけど)タイプのUI作成方法。
Web開発でいうSmartyのような感じなのかな?と、解釈しました。
WPFではXAMLというXML的な言語でUIの部分を構築し、C#やその他VSの言語で実装する感じで
実装とUI部分を切り分けて構築できるものとのことです。

まずは基本的なところからということで、こんな感じのリストとボタンのみのUIで
リストに表示するのとボタンをおしてHelloWorld!!をリストに追加するのをやってみました。

XAMLはこんな感じ。
ほぼ自動生成+ListBoxまわりを追加してる感じです。
ItemTemplateやDataTemplate~StackPanelあたりが、受け取ったコレクションの中身をどうやって構築しているのかを決めています。
StackPanelが、縦方向に、TextBlockを並べて表示しろ…という意味。 Binding Nameは、受け取ったコレクションの中に入っているオブジェクトの
プロパティとバインドしてる場所です。

続いてcs側。

このWPFには、「バインディング」というものがあって、XAMLのどこになにを表示するのかの紐付けを行います。
それがXAMLの中にある {Binding ~~~} となっているところになります。
cs 側からXAML側にデータを紐付けるには this.DataContext = XXX; で、
DataContextに対してコレクションを渡してあげればとりあえずOK。
とりあえず。

ObserbleCollection は、項目が追加したり削除されたときに通知を行ってくれるタイプのデータコレクション。
なので、今回のように、ボタンを押したら増える のようにUIに対して何かしたい場合は
このコレクションを使用すればOKとのこと。

pythonをやっていると、配列とコレクションの違いがイマイチ???になりますが、今のところ
コレクション=多数のオブジェクトを使う時に使うと便利なもの
という感じで認識しています。 参考
配列+αの便利機能、あるいは用途によっての最適化されたもの…ということかな?たぶん。

リストに表示したいアイテムのクラス(Person)を作成し、それをコレクションに追加して、それをDataContextに入れる。
新しくリストに追加するものは、このコレクションに新しくアイテムをいれればOK。

表示してるもの=コレクション なので、なんとなくわかりやすいです。

もっとちゃんと使う場合は、継承したり色々する必要があるっぽいですが
今の私にはこれが精一杯└(┐Lε:)┘

テンプレートとバインディングまわりがイマイチ能ミソに浸透してこないので
もうちょっと深く勉強していこうと思います。

先は長いズサーc⌒っ゚Д゚)っ

 

コメントを残す

メールアドレスが公開されることはありません。

*