文書の過去の版を表示しています。
WPF開発
WPFとは
Windows Presentation Foundation(WPF)は、マイクロソフトが開発したグラフィカルユーザーインターフェース(GUI)を開発するためのグラフィックスサブシステムの名称である。.NET Framework 3.0に含まれてリリースされた。
WPFでは、XAML(Extensible Application Markup Language)と呼ばれるXMLベースの描画用マークアップ言語に対応している。従来のビットマップグラフィックスの他にベクタグラフィックスを扱うことが可能であり、3次元グラフィックスや動画なども容易に扱えるようになった。これらのユーザーインターフェースは、テキストやドキュメントも含めて、統一的なAPIを用いて開発することができる。
WPFの最大の売りは多彩なUIによるユーザー体験の豊かさである。
Windows Formsとの違い
メリット
Windows Formsと比べてWPFのいいところは可変のレイアウトが作りやすいこと。
また、色々なデバイスでできるだけレイアウトが崩れないようにフォントサイズを含めたすべてのサイズ指定で論理ピクセル座標が標準になっている。参照:デバイス非依存ピクセル(DIU)について
Windows Forms では主に UI 要素に対してプロパティーを通じて個別に外観設定を行いますが、WPF では異なるスタイリングに対するアプローチをとっています。
WPF では強力なスタイルモデルを提供しており、基本的には Web 開発で用いられる CSS のような手法でスタイリングが行われます。これにより一元的な外観管理を行いやすくなります。UI とロジック部分が分離されるのでアプリケーション開発者とデザイナの分業が可能です。デザイン部分の再利用性も高まり、仕様変更にも柔軟に対応すること ができます。
デメリット
WinFormに使い慣れている人からするとWPF+XAMLの習得コストが高い。
.NET Framework 4.7では、WPFの特徴でもある高DPIサポートがWindows Formsアプリケーションに適用されるようになった。但し、.NET Framework 4.7を利用してアプリケーションを開発するには、Windows 10 バージョン1703や「Visual Studio 2017」でv15.0からv15.1へのアップデートが必要。
Tips
Wrap対応のLabel
通常のLabelコントロールは、自動改行のwrapに対応していません。下記コードで対応する。
- test.xaml
<Label x:Name="lblHeader" Grid.Row="0" FontSize="32" > <AccessText TextWrapping="Wrap" Text="手直し品です。ご注意ください。12345678901234567890"/> </Label>
スクロールバーのサイズ取得
ListViewのスクロールバーのサイズを取得する。
wpf : ListViewのある列の幅を自動でいっぱいに広げその他の列幅は固定
var listBoxChrome = VisualTreeHelper.GetChild(listView, 0) as FrameworkElement; var scrollViewer = VisualTreeHelper.GetChild(listBoxChrome, 0) as ScrollViewer; var scrollBar = scrollViewer.Template.FindName("PART_VerticalScrollBar", scrollViewer) as ScrollBar; var w = scrollBar.ActualWidth;