2010年05月04日

最大化ボタン最小化ボタン

WPF の Window クラスでは、WinForm における MaximizeBox/MinimizeBox プロパティは廃止され、代わりにResizeMode プロパティで賄われるようになっています。しかし ResizeMode 列挙体には CanMinimize はあっても CanMaximize はないため、最小化だけ禁止というのは実現できません。またウィンドウ境界線のドラッグによるリサイズ動作も兼ねるため、最大化ボタンは使えないけど自由なリサイズは許可したい、といった要求には応えられません。ResizeMode によるリサイズ機能関連のプロパティ一元化は方向として良いと思うんですが、柔軟性が犠牲になっているのは残念な物です。

リサイズは、最大化、最小化、ドラッグによるリサイズ、という三つの独立した機能が考えられます。独立しているんですから、それぞれ独立したプロパティにしてしまいましょう。依存関係プロパティにすればバインディングもできて便利です。

これらのリサイズ機能は Windows の機能に依存しています。具体的に言うとウィンドウスタイルの、WS_MAXIMIZEBOX、WS_MINIMIZEBOX、WS_SIZEBOX です。これらの設定は WinForm なら CreateParams をオーバーライドするだけで簡単に実装できたんですが、その辺をできるだけ隠蔽している WPF では面倒です。ウィンドウハンドルを取得して、Win32API の SetWindowLong 関数で後からスタイルを設定する必要があります。

ソースコード表示
posted by Hongliang at 04:22| Comment(0) | TrackBack(0) | WPF | このブログの読者になる | 更新情報をチェックする

ここ(hongliang.seesaa.net)で公開しているものについて、利用は自由に行って頂いて構いません。改変、再頒布もお好きになさって下さい。利用に対しこちらが何かを要求することはありません。

ただし、公開するものを使用、または参考したことによって何らかの損害等が生じた場合でも、私はいかなる責任も負いません。

あ、こんなのに使ったってコメントを頂ければ嬉しいです。

×

この広告は1年以上新しい記事の投稿がないブログに表示されております。