2
3

More than 3 years have passed since last update.

エッセンシャルWPF

Last updated at Posted at 2020-09-13

諸言

 学習履歴全体のリンク
 https://qiita.com/shigural/private/444b991293e5ab1b40af

本文

エッセンシャルWPF

1章 はじめに

User32→Winform→WPFと発展してきたがいずれもCLRというシステムで動作している
従来との違い

  • 従来との違いは総合的なレンダリングとベクタベースのシステム

- XAML(ザムル)を利用した汎用的な記述

StachPanelを使うと縦に、WrapPanelを使うと回り込んだ配置ができる
配置は他にもViewportとTileModeによる塗りつぶし2D配置、GeometryModel3Dによる3D配置、DoubleAnimationによるアニメーションなどができる。Styleにより一斉にプロパティを定義できる。

2章 アプリケーション

WPFの原則

WPFの基本原則としてスケーラブルであること、つまり万能であることが上げられる。
WPFはビルドするとXBAPが生成される。これは極めて多機能であるがHTMLベースが標準である。HostInBrowser属性をfalseにすることでデスクトップアプリケーションプログラムとなり更に多機能となる。
WPFの基本原則にWebプログラミングとデスクトッププログラミングの結合も上げられる。例えばハイパーリンクのようなWeb機能をそのまま利用できる。

リソースと構成

System.Configurationを利用することでアプリケーションの永続的な状態を管理することができる。つまり状況を保存して起動時にロードすることができる。
リソースは3通りのビルドアクションがある。Contentはリソースをディレクトリにコピーする、Resourceは共通リソースに埋め込む、EmbeddedResourceはアプリケーションに個別で埋め込むがマークアップ利用ができない。リソースはGetContentStream、GetResourceStream、GetRemoteStream関数により読み込むことができる。URI参照による読み込みは、下位レベルではこれらの関数を呼び出している。

ウィンドウ

ウィンドウが呼び出されるとき、代表的なものとして次の手順が実行される。
1. コンストラクタが呼び出される
2. Window.Initializedイベントが発生
3. Window.Activeatedイベントが発生→Deactivate(不安定)と交互に何度も発生
4. Window.Loadedイベントが発生
5. Window.ContentRenderedイベントが発生
6. ユーザーがウィンドウを操作する
7. Window.Closingイベントが発生
8. Window.Unloadedイベントが発生
9. Window.Closeイベントが発生
ウィンドウを表示するためにはShow,ShowDialogを呼び出すもしくはVisibilityをVisibleに設定する方法があるが、どれも同じ挙動をする。これはプログラムから呼び出す場合とデータバインディングの両方に対応するためである。なお、Windowを別のWindowの子とするためにはOwnerプロバティを設定する。被オーナーは常にオーナーの上に表示され、オーナーの選択を妨げない。またオーナーが閉じると自動的に閉じ、オーナーが非表示になると自動的に非表示になる。ウィンドウの位置はWindowStartupLocationにより、大きさはSizeToContentにより設定できる。なおWindowStartupLocation.CenterOwnerによりオーナーの中心に表示できる。
ウィンドウの情報はすべてApplication.Windowsに与えられる。Application.Current.Windowsをforeachで取り出すことにより、各々のtitleからウィンドウ一覧を表示するようなことができる。

ユーザーコントロール

ウィンドウは独立した機能セットであるが、これよりも小さな単位としてコントロールが上げられる。コントロールはUIをカプセル化したユーザーコントロールContentControlと他のアプリケーションから利用できる再利用可能なカスタムコントロールに分かれる。

ナビゲーションとページ

WPFには3つのナビゲーションフレームワークを備えている。

  • ナビゲーションホスト(NavigationWindow)
    • Windowから派生する。戻るボタンなどナビゲーションを可能にするインフラストラクチャを追加する。
  • ナビゲーション対応コンテンツ(Page)
  • ジャーナルである。

3章 コントロール

4章 レイアウト

5章 視覚要素

6章 データ

7章 アクション

8章 スタイル

付録 基本サービス

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3