おはようございます。
今日はタイトルの通り、「体系的なWPF学習記事」のネタを考えます。
前提
他サイトで紹介されているWPF記事を剽窃(ひょうせつ)しない
これは当然ですね。剽窃したらアカン。 というか他の人の解釈を鵜呑みにせず、自分自身が十分WPFについて理解しているつもりなので(自信過剰かもしれません)自分で言葉を紡ぐ方が効率よく説明できるのではと思います。
可能な限り図説する(特にクラス階層)
これはもしこのブログのWPF学習記事を薄い本化するときに予め図示しておいた方がコンテンツの水増しができるのでは?と思ったからです。 まあ、WPFは水増ししなくても十分なコンテンツ量になると思います。 特にUMLダイアグラム(クラス図、シーケンス図)を使いたいと思っているので、astah professionalを購入すべき時なのかもしれません。
前提としてはこんなところでしょうか。
本題
章立て
さて、章立てを考えてみましょう。。。 ちなみにこの章立ては Pro WPF in C# 2010 の章立てをベースに順序を改変し、さらにWPFアプリをMVVMにするために必須な項目を追加しています。 この記事を書いた後にこの章立てを変更することがあります。予めご了承ください。
1. XAML 1-1. 基本的な書き方 1-2. Style 2. レイアウト 2-1. StackPanel 2-2. WrapPanel 2-3. DockPanel 2-4. Grid 2-5. Canvas 3. コントロール 3-1. ContentControl 3-1-1. Window 3-1-2. Label 3-1-3. Button 3-1-4. Tooltip 3-2. 特殊なコンテナー 3-2-1. ScrollViewer 3-3. ヘッダー付きコントロール 3-3-1. GroupBox 3-3-2. TabItem 3-3-3. Expander 3-4. テキストコントロール 3-4-1. TextBox 3-4-2. RichTextBox 3-4-3. PasswordBox 3-5. リストコントロール 3-5-1. ListBox 3-5-2. ComboBox 3-6. 範囲のコントロール 3-6-1. Slider 3-6-2. ProgressBar 3-7. 日付コントロール 3-7-1. Calendar 3-7-2. DatePicker コラム1. プロジェクト初期状態 4. DependencyProperty 5. ElementBinding 5-1. BindingMode 5-1-1. OneWay 5-1-2. TwoWay 5-1-3. OneTime 5-1-4. OneWayToSource 5-1-5. Default 5-2. Binding Updates 5-2-1. PropertyChanged 5-2-2. LostFocus 5-2-3. Explicit 5-2-4. Default 5-3. 要素でないオブジェクトにバインドする場合 5-3-1. Source 5-3-2. RelativeSource 5-3-2-1. Self 5-3-2-2. FindAncestor 5-3-2-3. PreviousData 5-3-2-4. TemplatedParent 5-3-3. DataContext コラム 2. ReactiveProperty 6. RoutedEvent 6-1. イベントルーティング 6-2. WPFのイベント 6-3. キーボード入力 6-4. マウス入力 6-5. マルチタッチ入力 7. コマンド 7-1. WPFのコマンドモデル 7-1-1. Command 7-1-2. Command Binding 7-1-3. Command Source 7-1-4. Command Target 7-2. ICommand Interface 7-3. RoutedCommand 7-4. Command Library 7-4-1. ApplicationCommands 7-4-2. NavigationCommands 7-4-3. EditingCommands 7-4-4. ComponentCommands 7-4-5. MediaCommands 7-5. コマンド実行 7-5-1. Command Source 7-5-2. Command Binding コラム3. ReactiveCommand 8. アプリケーション 9. リソース 10. ビヘイビア 11. Shape, ブラシ, Transform 12. アプリ開発戦略 12.1. Dependency Injection
イメージとしては、1, 2, 3を学んで実際にWPFのGUIを作ってみます。その後、コラム1でPrismを導入します。 4,5でデータバインディングを学び、コラム2でReactivePropertyを導入します。 6, 7でWPFのイベントやコマンドを学び、コラム3でReactiveCommandを使ってみます。 あと細かいことを学んで、最後にアプリ開発戦略としてDIを学んでもらう形でフィニッシュとする予定。
とりあえずこんな感じでしょうか。