問題タブ [elementhost]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
355 参照

.net - Windows フォームから WPF コントロールにデバッグ モードにステップ インできません

ElementHostコントロールを使用して、アプリケーションからウィンドウに作成したカスタム WPF コントロールを埋め込みます。以前、コントロールが作成されたときに F11 ボタンを押すことで、WPF コントロールをデバッグできました。

しかし、XP から Windows 8 マシンに移行した後、同じコードをデバッグしようとしていますが、WPF コントロールのデバッグ モードに入ることができません。誰でもこれで私を助けてくれませんか。ありがとう

0 投票する
2 に答える
2010 参照

.net - Windows フォームでホストされている wpf コントロールのマウスホイール イベント

ElementHost コントロールを介して使用できる 1 つの WPF ユーザー コントロールを持つ Windows フォーム アプリケーションがあります。

WPF ユーザー コントロールには、マウス ホイール イベントに応答するように設計されたコードがあります。ただし、アプリケーションを実行してマウスホイールを使用すると、これらのイベントに関連して記述されたコードは wpf で実行されません。Visual Basic コードにブレークポイントを配置して、これをテストしました。それにもかかわらず、他のマウス イベント (3D モデルの回転に使用するクリックやドラッグなど) には応答します。

Windowsフォームがマウスホイールをサポートしていない(または制限されている)ため、マウスホイールイベントがWindowsフォームからWPFユーザーコントロールに渡されないのではないかと思っていました。

対照的に、WPF アプリケーションに WPF ユーザー コントロールの簡単なプログラムを作成しようとしました。このコントロールはマウスホイール イベントに応答します。

WPF ユーザー コントロールには viewport3D があり、これを使用して 3D 描画を行いますが、これは Windows フォームでは実行できません。

この問題の回避策はありますか? お役に立てれば幸いです。ありがとうございました。

WPF コントロールで Mousewheel イベントを設定する方法の例を次に示します。UserControl、Grid、および Canvas 内で試しましたが、いずれのマウスホイール イベントも取得しません。

0 投票する
3 に答える
1300 参照

c# - 透過的な Windows.Form での WPF UserControl のホスティング

WPF を に挿入する必要がありUSerControlますWindows.Form。これは私のコントロールです:

このコントロールをホストするためElementHostに、フォームの唯一のコントロールとしてオブジェクトを使用します。Children次のことを行う可能性が必要です: フォームの不透明度を 0 に設定した場合、フォームを非表示にするために、すべてのおよびStrokesMyの不透明度を 1 に設定し続ける必要がありますInkCanvas(だから、彼ら)。

プロパティを使用してみTransparencyKeyましたが、 では動作しないようElementHostです。この問題を解決するにはどうすればよいですか?また、フォームとユーザー コントロールの間で異なる不透明度を設定するにはどうすればよいですか?

0 投票する
1 に答える
365 参照

wpf - ElementHost が MTAThread で機能しない

MTAThreadの Windows フォーム内でホストする必要がある WPF ユーザー コントロールがあります。また、ソリューションは STAThread と MTAThread の両方で機能するはずです。また、技術的には、運用環境でアパートメントの状態を変更するオプションはありません。

Program.cs

この場合、カウントが増加し、MTAThread で例外がスローされないため、ホストがコントロールに追加されるようになりました。しかし、WPF ユーザー コントロールはレンダリングされません。ただし、STAThread では、「呼び出し元のスレッドはこのオブジェクトにアクセスできません....」という例外をスローしています。

これで何か助けていただければ幸いです。

0 投票する
1 に答える
2093 参照

c# - ElementHost のサイズにより、メモリ使用量が高くなり、wpf のオープン/ロードが遅くなる

問題:

別の WPF ウィンドウを開くことができる Winforms アプリケーションがあります。このウィンドウにはさまざまなアイコンとテキストが含まれており、過度に複雑ではありません。メイン ウィンドウの winforms に戻ります。これには、ElementHost を使用して埋め込まれた WPF コントロールもあります (ElementHost は、Winforms が WPF コントロールをホストできるようにするために特別に設計されています)。ただし、このアプリケーションのメモリ使用量が非常に高くなると、この 2 番目の WPF ウィンドウを開くのにかなりの時間がかかる可能性があることに気付きました。

問題を再現できるVS2012で小さなテストアプリケーションを作成しました。テスト アプリケーションは、2 つのボタンを持つ Winforms ウィンドウを開きます。「4GBのメモリ使用量を追加」と「WPFウィンドウを開く」。WPF ウィンドウには 1 つの小さなアイコン (48*48) があり、それだけです。4Gb のメモリ使用量を追加して初めてウィンドウを開こうとすると、ウィンドウを開くのに約 7 秒かかります。

コード: BitBucketを通じてテスト アプリとソース コードを公開しました。

私たちが発見したこと:

  • 32 ビットでは OutOfMemoryExceptions がスローされるため、アプリは間違いなく 64 ビットで実行されています。
  • メモリ使用量がなければ、ウィンドウはすぐに開きます。
  • メモリ使用量により、ウィンドウは最初に開いたときだけ遅くなります。
  • WPF ウィンドウに画像がない場合は、すぐに開きます。
  • winforms コントロールにある elementhost のサイズを 1*1 に縮小すると、ウィンドウがすぐに開きます。このサイズでは WPF コントロールの多くが表示されないため、明らかにこれは優れたソリューションではありません。
  • アプリケーションの ElementHost のサイズは約 1000*700 ですが、ElementHost のサイズを縮小すると大きな低下点があることに気付きました。そのため、約 350*350 になるまでこの 10 秒かかります。再び速くなるように改善します。これは、コンピューターに依存するか、何らかの制限がある可能性があります。
  • wpf ウィンドウから画像を削除すると、再び高速になります。
  • 新しい画像をリソースとして WPF ウィンドウに追加すると、開く時間が直線的に遅くなります (たとえば、画像 1 つ = 7 秒、画像 2 つ = 14 秒)。
  • 画像が表示されているのと同じサイズであることを確認して実験したので、サイズ変更はありませんが、これは何の違いもないようです。
  • さまざまな画像タイプ、.png、.tiff、.ico を試してみましたが、どれも遅いようでした。

他の誰かがこの問題を経験しましたか / 次のステップについて何か提案はありますか?

0 投票する
4 に答える
2376 参照

c# - ElementHost コントロールからメモリリークをクリアする方法

Winform ユーザー コントロールで WPF コントロールをホストする必要があります。これを実現するために、ElementHost コントロールを使用しました。Ants Memory profiler を実行すると、ElementHost コントロールに巨大なメモリ リークがあることがわかりました。以下の添付のリテンション グラフを見つけて、Memoryleak の修正にご協力ください。ここに画像の説明を入力

0 投票する
1 に答える
774 参照

wpf - WPF コンテンツが WinForms でホストされている場合にコマンドの入力バインディングを使用する方法

タブ コントロールを持つ Windows フォーム ウィンドウがあり、そのタブの 1 つが子要素として ContentControl を持つ ElementHost をホストしています。このコントロールには、子要素に入力フォーカスがある場合にのみ機能する入力バインディングのコレクションがありますが、フォーカスが失われると反応しなくなります。このような状況で、これらの入力バインディングをより高いレベルで定義することは可能ですか?

0 投票する
1 に答える
1238 参照

c# - C# Windows フォーム: 画像を WPF RichTextBox (ElementHost 内) にドロップします。

フォームに WPF RichTextBox (ElementHost 内) を含む ac# Windows Forms プロジェクトがあり、エクスプローラー (Windows 7 x64) から画像をドラッグ アンド ドロップしたいのですが、カーソルには許可されていないシンボルしか表示されません。これは私のコードです:

イベントはデザイナーを使用してサブスクライブされます。それらのどれも解雇されません:

Windows フォーム RichTextBox を使用する場合は機能しますが、WPF RichTextBox が必要です。