1

誰が挑戦したいですか?

私は現在、再利用可能なテーマ アセンブリの一部となるControlTemplateクロムレスに取り組んでいます。Window移動、閉じる、最小化、および復元の動作を暗黙的にしたいので、この機能に添付された動作を記述し、それをテンプレートに含めました。

さて、リサイズして分岐点に来ました。良くも悪くも、動作でマウスの動きを処理し、カーソルがサイズ変更の「ゾーン」内にあるかどうかを調べています。カーソルを適切に変更するには十分ですが、実際にウィンドウのサイズを変更するようになりました.3つのオプションがあります。

必要に応じて、手でボールを動かして、左と上、幅と高さを調整することができました。これは最も単純なオプションであり、添付されたビヘイビアを使用して簡単に実現できますが、適度に重い作業のように思えます。ウィンドウが調整されてちらつきが発生するため、WPF が引き続きレンダリングされることを理解しています。

2番目のオプションは、メッセージフックを取得してWM_NCHITTESTなどをリッスンすることですが、これまでに見つけた解決策にはサブクラス化が含まれてWindowおり、テーマの消費者にそうでないコントロールを使用することを強制したくありません提供されるフレームワーク。

Window最後のオプションは、マウスがドラッグされたときに表示される長方形を画面に描画し、サイズを変更するMouseUpことです..これは実行可能に思えますが、これまでに行ったことがないため、いいね。

それで、..どうすればいいですか?これまでのところ、Win32 ルートは私の最良の選択肢のように思えますが、誰かが機能する「より純粋な」ソリューションを持っている場合は、そうしません。dynamicいくつかの魔法が可能になる場合に備えて、オプション 3 と .Net 4 までの提案を喜んで受け取ります。

前もって感謝します。

4

0 に答える 0