誰が挑戦したいですか?
私は現在、再利用可能なテーマ アセンブリの一部となるControlTemplate
クロムレスに取り組んでいます。Window
移動、閉じる、最小化、および復元の動作を暗黙的にしたいので、この機能に添付された動作を記述し、それをテンプレートに含めました。
さて、リサイズして分岐点に来ました。良くも悪くも、動作でマウスの動きを処理し、カーソルがサイズ変更の「ゾーン」内にあるかどうかを調べています。カーソルを適切に変更するには十分ですが、実際にウィンドウのサイズを変更するようになりました.3つのオプションがあります。
必要に応じて、手でボールを動かして、左と上、幅と高さを調整することができました。これは最も単純なオプションであり、添付されたビヘイビアを使用して簡単に実現できますが、適度に重い作業のように思えます。ウィンドウが調整されてちらつきが発生するため、WPF が引き続きレンダリングされることを理解しています。
2番目のオプションは、メッセージフックを取得してWM_NCHITTESTなどをリッスンすることですが、これまでに見つけた解決策にはサブクラス化が含まれてWindow
おり、テーマの消費者にそうでないコントロールを使用することを強制したくありません提供されるフレームワーク。
Window
最後のオプションは、マウスがドラッグされたときに表示される長方形を画面に描画し、サイズを変更するMouseUp
ことです..これは実行可能に思えますが、これまでに行ったことがないため、いいね。
それで、..どうすればいいですか?これまでのところ、Win32 ルートは私の最良の選択肢のように思えますが、誰かが機能する「より純粋な」ソリューションを持っている場合は、そうしません。dynamic
いくつかの魔法が可能になる場合に備えて、オプション 3 と .Net 4 までの提案を喜んで受け取ります。
前もって感謝します。