1 / 18

How To WPF アプリケーション Part 1 by 中博俊

How To WPF アプリケーション Part 1 by 中博俊. WPF アプリって覚えること多いでしょ? 多いです。 XAML で書かなきゃいけないんでしょ? 基本的には書かなきゃいけません。 大変なんでしょ ? ちょっと大変かもしれません。. WPF アプリって覚えること多いでしょ? 多いです。 XAML で書かなきゃいけないんでしょ? 基本的には書かなきゃいけません。 大変なんでしょ ? ちょっと大変かもしれません。. でも楽しいんです。. 本日の目標. 細かい基礎技術の説明はしません。

dieter
Download Presentation

How To WPF アプリケーション Part 1 by 中博俊

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. How To WPF アプリケーション Part 1 by 中博俊

  2. WPFアプリって覚えること多いでしょ? • 多いです。 • XAMLで書かなきゃいけないんでしょ? • 基本的には書かなきゃいけません。 • 大変なんでしょ? • ちょっと大変かもしれません。

  3. WPFアプリって覚えること多いでしょ? • 多いです。 • XAMLで書かなきゃいけないんでしょ? • 基本的には書かなきゃいけません。 • 大変なんでしょ? • ちょっと大変かもしれません。 でも楽しいんです。

  4. 本日の目標 • 細かい基礎技術の説明はしません。 • そのかわり単純なアプリケーションを作れるようになりましょう。 • おまけ

  5. Hello World 1 とりあえずDEMO1

  6. これだけじゃさみしいですので、やっぱりボタンを押すようにしましょう。これだけじゃさみしいですので、やっぱりボタンを押すようにしましょう。

  7. Hello World 2 ボタンでDEMO2

  8. バインディング • WPFの特徴はDataContextです。 • いままでのWindowsFormsのよくあるパターン

  9. バインディング • WPFらしい

  10. バインディング • データと画面処理の分離を行います。 • これをバインディングといいます。 • 今日はバインディングの詳細までは触れません。 • このソースとおなじ実装をしてみましょう。 • DEMO3

  11. バインディング • WPFの基本はバインディングです。 • バインディングの基本はINotifyPropertyChangedです。 • ドキュメントクラス共通のクラスを作っておくと便利です。

  12. バインディング public class NotifyPropertyChangedBase : INotifyPropertyChanged{ public event PropertyChangedEventHandlerPropertyChanged; protected void FirePropertyChanged(string propertyName) { if (this.PropertyChanged != null) { this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); }}}

  13. Id? • いままでのXAMLなどでおかしいところがありませんでしたか? • <TextBox Text="{Binding Path=text1}"/> IDがない!!!

  14. ID? • そもそもオブジェクトをツリー形式で保持するのには参照さえあれば実現可能です。 • 逆になぜ今までIDを必要としたのでしょうか? • IDをつけてコントロールを操作していたためで、コントロールの操作が少なければIDなど不要なのです。 • とはいえ・・・つけなければいけない場合もあるので  <TextBox x:Name="ttt"/>

  15. バリエーションの DEMO4

  16. 解決策1 • 計算のもとになっている値の変更時にButtonEnabledも変更通知を上げてもらう。 • 解決策2 • 変更通知を利用して、変更通知を上げる。 • 関数型言語っぽく利用するにはすこし手間が必要ですね。

  17. HTMLのように<TAG></TAG>でくくられた中身はTag.Contentと等価です。HTMLのように<TAG></TAG>でくくられた中身はTag.Contentと等価です。 • Tag.Contentには1つの何かを置くことができます。 • ちょっとボタンにお遊びしてみましょう。 おまけのDEMO5

  18. 今回のまとめ • WPFらしいDocument-Viewの関係を構築するとWindowsFormsの考え方から切り替えよう。 • INotifyPropertyChangedをモノにしようNotifyPropertyChangedBaseというようなドキュメントの共通ベースクラスを作るといい • 複数の値から導き出すプロパティはひと工夫が必要 Enjoy WPF

More Related