WPFアプリケーションのWebBrowserコントロールに「オーバーレイコントロール」を表示する方法のヒントを誰かに教えてもらえますか?ユーザーが機能を選択でき、選択するとナビゲーションコントロールが消えるように、ナビゲーショングラフィックをオーバーレイとして表示したいと思います。
今のところ、WPFの経験はあまりありません。:(どこから始めればいいのかわかりません。ヒントやリンクは素晴らしいでしょう。ありがとう
これには問題があります。WPFブラウザコントロールには「空域」の問題があります。基本的に、それはあなたがブラウザコントロールの上に何も置くことができないことを意味します。
回避策は、オーバーレイされたコントロールをポップアップコントロールに配置することです。
ちょっとしたハックですが、これを乗り越える方法を見つけました。基本的に、コントロールをWinFormコントロールとして作成し、WindowsFormsHostを使用してそれらをホストします。
WindowsFormsHostは、Webブラウザコントロールの上に配置されます。
私が言ったように、理想的ではありませんが、あなたが必死ならうまくいくでしょう。
Chromiumを使用するwpfベースのブラウザがあります。ActiveXブラウザコントロールではなく、他のwpfオブジェクトと同じように扱うことができるはずです。
WPF Webブラウザーコントロールのエアスペースを通過するのは困難ですが、アニメーションを表示するときにWebブラウザーコントロールの高さを最小化し、タスクが終了したときに高さを再設定することができます。
この問題のより良い回避策は、ブラウザコントロールの高さを処理することです。以下の簡単なシナリオを見つけてください。
メインウィンドウにWebブラウザコントロールがあるとします。たとえば、次のようなアクションを実行する場合、メインウィンドウの上にある別のユーザーコントロールがあるボタンをクリックします。ただし、Airspaceの問題により、Webブラウザーはその親コントロールに配置されず、コントロールの上に表示されます。
修正:標準の修正は、シナリオに応じて、Webブラウザーに対する他の制御をトリガーするときに、Webブラウザーの高さをゼロに設定できることです。以下に、サンプルの実装があります。
MainWindow.Xamlにイベントを含めます。
Activated="Window_Activated"
Deactivated="Window_Deactivated"
Xaml.csでは、高さを設定してシナリオを処理します。
private void Window_Activated(object sender, EventArgs e)
{
wb.Height = double.NaN;
}
private void Window_Deactivated(object sender, EventArgs e)
{
wb.Height = 0;
}