WPF

プログラミング

Caliburn.Micro に入門してみる その3

前回は簡単にバインディングができることを確認しました。実はあれは省略形に近いものだったので、フルに設定するとどのようになるかを今回確認します。基本的に前回のプロジェクトの使い回しで説明します。 メソッド呼び出し ボタンの Name を削除して、 Interaction.Triggers を指定してメソッドを呼び出してみます。ShellView.xaml は以...
プログラミング

Caliburn.Micro に入門してみる その2

前回はとりあえずプロジェクトを作成し、 Caliburn.Micro のお作法に従った Hello,world のようなものをやってみました。 今回はこのプロジェクトを使って、データバインディングを確認をしてみます。 今回も先人の記録を辿りつつ進めていきたいと思います。 Caliburn Micro Part 2: Data Binding and Even...
プログラミング

Caliburn.Micro に入門してみる

今まで MVVM のインフラストラクチャのライブラリとして Livet を使用していましたが、新バージョンも出ないし新しい環境用のプロジェクトテンプレートも提供が無いようだったので、比較的最近のものでよさそうなものは無いかと探してみたところ、Caliburn.Micro が良さそうだったのでこれを触ってみることにしました。 ここでは、 Nuget から簡単に...
プログラミング

WPF の ListView で選択項目を中央にしたスクロール制御

ListView で選択された項目をコントロールの中央に表示したいと思うことがあります。今回はこれを実現するべく実装を考えてみました。考え方としては ListView が持っている ScrollViewer を制御して、スクロールを制御することにしました。 結果 実装した結果を示します。作成したアプリの動きとしては次のようになっています。 選択状態にあるもの...
プログラミング

ListView での VerticalContentAlignment バインディングエラー

ListView(+ListViewItem) のスタイルをいじってバインディングのエラーが出るのは分かるのですが、予期しないところでエラーが出るので困っていました。今回、ひとまずどういったときにエラーメッセージが出るのかが掴めたのと、今後同じように悩まないためにもメモとして残しておこうと思います。 バインディングエラーと対策 ListView あたりのスタ...
プログラミング

WPF と OpenGL の空域問題への対処

WPF を使っていて厄介な問題の1つに空域の問題があります。特に DirectX や OpenGL, Vulkan といった HWND を使うものを扱って WPF の世界に持ち込むと遭遇します。他にも HWND を必要とする(従来型の)コントロールを配置すると出遭います。ブラウザのコントロールなどが該当するようです。 具体的には HWND を使用したコントロ...
プログラミング

WPF TreeView with SelectedPath binding

Windows エクスプローラーが備えているフォルダツリーのようなものを、 WPF を利用している自作アプリケーションで使用したいことがあります。 調べてみるといくつかの実装が見つかりますが、フォルダツリーの実現のためにビューモデルとビューが分離されている本気度の高いものが多く、もう少し手軽なものがないかなと思った次第です。 以前に以下のアドレスで公開されて...
プログラミング

WPF で描画結果を画像ファイルへ

GDI のメモリ DC で書いたオフスクリーンの内容で画像ファイルを作成するという方法はよく知られていると思います。これを WPF ではどうするのだろうと思って試してみました。 描画 まずは画像作成元となるものを作ります。 WPF では RenderTargetBitmap というクラスがあり、これを使うと保持している内容をビットマップとして取得が出来ます。...
プログラミング

WPF TreeView の破線描画付き その3

もうすこし TreeView の見た目に足掻いてみました。 今までのものは項目の部分でクリックが有効になるのですが、 Windows エクスプローラーなどではその行で選択できるようです。 これを実現してみようとトライしてみました。 結果 現時点の実装状態ではこんな感じが出来ています。 実現方法 通常のものだと TreeViewItem の要素は 田 の形で区...
プログラミング

WPF TreeView で破線付きを作ってみた その2

先日の続きの話になります。 TreeView の階層構造を破線でつなげて描画したものにするといったネタになります。 TreeView 本体ではなく、 TreeViewItem のテンプレートを編集して以下のようなものが実現できました。 標準のテンプレートで変更した箇所と言えば、開閉のための三角を+や-に変更したところでしょうか。 未使用の列については破線を描...