問題タブ [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.
.net - ElementHostを使用してWinformアプリケーションでWPFUserControlをホストすることに不利な点はありますか?
ElementHostを使用してWinformアプリケーションでWPFUserControlをホストすることに不利な点があるかどうか知りたいですか?
一般的に、まともな外観の基本的なインターフェイスを備えた新しいWPFアプリケーションを作成するには時間がかかると感じているので質問します。新しいWinformsアプリケーションを作成し、それにいくつかのコントロールを投げると、他の多くのアプリケーションと同じように見え、動作するが、見た目がわかりにくい基本的なインターフェイスになってしまうという意味でまともです。WPFアプリケーションで同じことを行うと、同じ結果が得られないと感じます。デザイナーに役割を変更し、特定の外観にするために余分な時間を費やさない限り、背景が白い「プレーン」なアプリケーションになります。仕方。
ただし、定型化されたインターフェイスを比較的簡単に作成できるため、WPFが望ましい場合があります。ビデオプレーヤーコントロールについて考えてみましょう。WPFでは、非常に見栄えがよくカスタムに見えるものを作成できますが、Winformsコントロールよりもはるかに少ない時間と労力で済みます。このような場合、OnPaintをオーバーライドするよりも時間がかからないため、WPFを使用するのは理にかなっています:-)。
私は多くの主観的な用語を使用していることに気づきましたが、これが元の質問の背後にある私の理由です。
アップデート:
私の「ビデオプレーヤーコントロール」の例を明確にするためだけに。WPFをMediaElement使用すると、再生できるだけでなく、ビデオが一時停止しているとき、または半透明の「再生/一時停止/停止/音量」バーを表示したい場合は、ビデオに再生ボタンをオーバーレイします。マウスを特定の場所に置くと、WPFはWinformsのどの代替手段よりもはるかに簡単になります。
編集:
構成オプションが間違っているか何かがあるかもしれませんが、WPFとWinforms Controlを比較すると、[説明]セクションが表示されないのもイライラします。WPFプロパティフォームでF1キーを押しても、現在の特定のプロパティ/イベントに移動できないことは、さらに苛立たしいことです。
アップデート:
他に誰か?ElementHostでWPFUserControlをホストすることによって生じる、パフォーマンスへの影響や機能の制限についてもっと心配しています。これまでのところ、ランタイムの一時的なオーバーヘッドがあるように聞こえますが、それだけですか?
wpf - Windows フォーム埋め込みリソースを WPF メディア要素のソースとして使用する方法は?
画像とビデオの両方を再生したい WinForms アプリケーションで MediaElement をホストしています。私の画像とビデオは、アプリケーションへの埋め込みリソースとして設定されています。
MediaElement.Source プロパティは URI のみを受け入れます。
MediaElement が埋め込まれたリソース ファイルをディスクに書き込まずに再生する方法についてのアイデアはありますか?
ありがとう。
vb.net - WPFユーザーコントロールがメモリ不足の例外を引き起こしています
無料のスペルチェックソリューションを探していたので、これを行うのはとても賢いと思いましたが、そうではないと思います。
Windowsフォームベースのアプリケーションを作成しましたが、フォームでユーザーが指定した量のユーザーコントロール(テキストボックスを含む)をパネルに追加したいと思います。その後、ユーザーはいくつかのボタンをクリックすると、このパネルのコントロールがクリアされ、新しいコントロールが追加されます。ユーザーが何かを実行すると、プロセスが繰り返されます。今、私はこれらのテキストボックスがスペルチェックをサポートすることを望み、無料の解決策を探しました。
WPFテキストボックスは、通常のWinフォームのテキストボックスではサポートされていないスペルチェックをサポートしています。これらのWPFテキストボックスを、パネル内にあるElementHostオブジェクトに追加することで、使用できると思いました。このパネルはユーザーコントロールになります。
したがって、私のアプリケーションでは、これらのユーザーコントロールのインスタンスをフォームに追加し、.NETのスペルチェックの良さを利用することができます。これは実際には機能しましたが、アプリケーションをしばらく使用した後、メモリ不足エラーのためにアプリケーションが最終的にフリーズすることがわかりました。この問題は通常のテキストボックスでは発生しないため、これらのWPFコントロールのメモリエラーを特定しました。
ウィンドウを開いてコントロールの数を指定すると、これがコントロールの追加方法とほぼ同じです。
ご了承ください:
- myPanelはフォーム上のパネルです
- SpecialUserControlは、(ElementHostオブジェクト内の)WPFテキストボックスを使用するユーザーコントロールです。
ユーザーがボタンを押すと、パネルはクリアされます。
その後、ユーザーはプロセスを繰り返すことができます。
解決策を見つけようとしたところ、インターネット上で多くの結果が出ており、パネルをクリアしてもWPFコントロールが消えないことが問題だと思っています。この結論に続いて、私はこれらのコントロールを破棄するか、メモリの問題が発生し続ける以外に何も設定しないことに関して、さまざまな解決策を試しました。ここで誰かがアドバイスやアイデアをくれたら、本当にありがたいです。
c# - デバッガー ビジュアライザー、ElementHost、およびエディット コンティニュの問題
最近、アプリケーションのカスタム タイプの 1 つに対して、Visual Studio 2008 用のカスタム Debugger Visualizer を作成しました。ビジュアライザーの UI は WPF で記述され、要素ホストでホストされ、IDialogVisualizerService windowService オブジェクトを使用して表示されます。
すべてがうまく機能し、ビジュアライザーが読み込まれて関連情報が表示されますが、ビジュアライザーの読み込み後にアプリケーションで「編集して続行」しようとすると、Visual Studio がクラッシュし、有用なエラー メッセージが表示されません。
これをデバッグしようとして、ほとんどすべてのコードをソリューションから削除し、ObjectSource を使用して文字列をシリアル化し、空の要素ホストのみを表示するだけになりましたが、編集して続行するとクラッシュします。要素ホストを削除して WinForms コントロールまたはフォームを表示すると、クラッシュは発生しません。
ビジュアライザーのコードは次のとおりです。
何か案は?
c# - WinForms での WPF ホスト コントロールの DependencyProperty へのバインディング
私は、ホストされている WPF ユーザー コントロール (ElementHost を使用) であるいくつかの要素を持つ WinForms アプリを持っています。
Button.EnabledWinForm のコントロール プロパティ ( ) を、ホストされた WPF ユーザー コントロール ( ) のカスタム DependencyProperty にバインドできるようにしたいと考えていますSearchResults.IsAccountSelected。
System.Windows.Forms.Binding を DependencyProperty によって管理されるプロパティにバインドすることは可能ですか?
また、System.Windows.Forms.Binding がINotifyPropertyChanged.PropertyChangedイベントを監視していることはわかっているので、DependencyProperty によってサポートされるプロパティがこれらのイベントを自動的に発生させるのでしょうか、それとも PropertyChanged イベントの送信を手動で実装および管理する必要がありますか?
wpf - WPF サイズを物理ピクセルに変換するにはどうすればよいですか?
WPF (解像度に依存しない) の幅と高さを物理的な画面ピクセルに変換する最良の方法は何ですか?
(ElementHost を介して) WinForms フォームに WPF コンテンツを表示し、いくつかのサイズ変更ロジックを解決しようとしています。OSがデフォルトの96 dpiで実行されている場合、問題なく動作しています。ただし、OS が 120 dpi またはその他の解像度に設定されている場合は機能しません。これは、Width を 96 として報告する WPF 要素は、WinForms に関する限り、実際には 120 ピクセル幅になるためです。
System.Windows.SystemParameters に「1 インチあたりのピクセル数」の設定が見つかりませんでした。私はWinFormsの同等物(System.Windows.Forms.SystemInformation)を使用できると確信していますが、これを行うためのより良い方法はありますか(WinForms APIを使用して手動で計算するのではなく、WPF APIを使用する方法を読んでください)?WPFの「ピクセル」を実際の画面ピクセルに変換する「最良の方法」は何ですか?
編集:WPFコントロールが画面に表示される前に、これを行うことも検討しています。Visual.PointToScreen を作成して正しい答えを得ることができるように見えますが、コントロールがまだ親になっておらず、InvalidOperationException "This Visual is not connected to a PresentationSource" が発生するため、使用できません。
c# - Visual Studio C# 2008 で WPF ユーザー コントロールが見つかりません。代わりに存在しないコントロールで立ち往生
これはかなり珍しい質問ですが、問題は次のとおりです。
プロジェクト Remote で作成された、Visual Studio C# 2008 で作成された map.xaml という WPF コントロールがあります。
ElementHost ツールを使用して、これをリモートの Windows フォームに追加したいと考えています。シンプルですね。
ElementHost を作成し、HostedContent を選択しましたが、利用できる唯一の選択肢は UserControl1.xaml です。これは、以前にリモートでテストしたときに作成したファイルです。ただし、このファイルは、作業が終了した後、完全に削除されました。システム全体とプロジェクトを検索しましたが、それへの参照が見つかりません。
なぜこれが起こっているのかについて誰かが何か考えを持っているなら、私は大いに感謝します; map.xaml を追加したいだけですが、VS はこのゴースト ファイル以外の認識を拒否しています。
ありがとう、
M
multithreading - ElementHostは、「多くのUIコンポーネントがこれを必要とするため、呼び出し元のスレッドはSTAである必要があります」と表示します。
ElementHostをWindowsフォームに追加しました(フォームには他にもいくつかのc#コードがあります)。次に、「多くのUIコンポーネントがこれを必要とするため、呼び出し元のスレッドはSTAである必要があります」というエラーが表示されました。スレッドをSTAに変更しましたが、他のものをブロックしました...他のコードに触れることなくelementhostを機能させる方法はありますか?
これが私がスレッドを変更する方法のコードです:
.net - WinForms アプリの ElementHost に WPF コントロールが表示されない
WinForms アプリの ElementHost でホストしようとしている WPF コントロールに問題があります。このコントロールは、もともと別のテスト プロジェクト (WPF アプリ) で開発したルックレス カスタム コントロールです。そこでは明らかに正常に動作しますが、私の WinForms アプリでは、ElementHost が表示される空白の灰色のボックスしか表示されません。
ElementHost を作成、設定、および親 Control に追加するための C# コードを次に示します。
親コントロールには、必要に応じて実行時に追加および削除される他の WinForms コントロールが含まれます。これらはすべて、Dock を DockStyle.Fill に設定して個別にホストされています。したがって、追加するたびに、ElementHost を Z オーダーの後ろに送信して、正しくレンダリングされるようにします。
したがって、空域の問題などに遭遇していないことはわかっています。
私が疑問に思ったことの 1 つは、元のプロジェクトでは、すべてのルックレス コントロールのスタイルが App.xaml のアプリケーションのリソース ディクショナリに次のようにマージされたことです。
App.xaml を WinForms プロジェクトに移行しましたが、ビルド アクションが Page に設定されています。ApplicationDefinition に設定すると、アプリケーションに複数のエントリ ポイントがあるというエラーが表示されますが、これは理にかなっていますが、スタイルなどが取得されているかどうか疑問に思っています。そうでない場合、これが、コントロールがあるはずの場所に空白の灰色の四角形が表示される理由を説明している可能性があります。これらがないと、その外観を定義するものが何もないためです。おそらく問題は、これらのスタイルを WinForms アプリケーションに取り込んで、WPF コントロールがそれらを認識できるようにするにはどうすればよいかということです。
また、これは .NET Fx 3.5 で実行されていることにも言及する必要があります。
とにかく、今のところ私は困惑しているので、どんな助けも感謝して受け取ります.
どうもありがとう!
バート
wpf - テキストは、WPFウィンドウとElementHost内で異なる方法でレンダリングされます
WPFの相互運用性を使用して、WinFormsフォーム内でWPFユーザーコントロールをホストします。醜いテキストレンダリングを除いて、すべてが正常に機能します。
-ここにWPFウィンドウの単純なラベルがあります:
WPFウィンドウhttp://img525.imageshack.us/img525/7049/wpfwindow.png
--およびWPFユーザーコントロールがWinFormsでホストされている場合に表示されるのと同じラベル:

相互運用機能のバリエーションはまったく異なります。文字間の間隔はゼロであり、テキストは純粋なWPFのバリエーションよりも太字に見えます。通常のテキストが受け入れられる場合、太字のテキストは醜いです。
それを修正する方法はありますか?
前もって感謝します!