私の主なプロジェクトはWPFの下にあり、私のソリューションには次のものがあります:
- 名前が Form1 の winform
- MainWindow.xaml という名前の wpfForm
私はこの仕事をしたい: ボタンがクリックされた場合、MDIとまったく同じように MainWindow に Form1 を表示します。
私の主なプロジェクトはWPFの下にあり、私のソリューションには次のものがあります:
私はこの仕事をしたい: ボタンがクリックされた場合、MDIとまったく同じように MainWindow に Form1 を表示します。
この場合、私を助けてくれてありがとう、あなたの答えは本当に私を助けます、しかし私は私の目的を見つけました:私は私のフォームコードでwpfウィンドウ(私のウィンドウフォームコントロールではなく)にウィンドウフォーム(form1)を使いたかっただけです、私はただ継承を変更しますこのようなフォームの代わりにユーザーコントロールへのフォーム1の
public partial class Form1: UserControl
{
/// my code ...
}
そのため、フォームがusercontrol now(nice job)であるため、windosformshostでこのusercontrolを使用できますが、別の問題が発生しました。コントロールに視覚的なスタイルがありませんでした。そのため、msdnで検索し、このリンクから回答を得ました。visual_Problem答えはenable_visualにありました 。つまり、winformshotがWindowsフォームをホストする前に(ユーザーコントロールを提供する)、次のコードを記述する必要があります。
System.Windows.Forms.Application.EnableVisualStyles();
コメントしてくれてありがとう。よろしく、Hothreeyn。
MSDN から: WindowsFormsHost クラス
WindowsFormsHost 要素を使用して、WPF 要素またはページ内に Windows フォーム コントロールを配置します。
Windows フォーム コントロールまたはフォームで WPF 要素をホストするには、ElementHost コントロールを使用します。
WPF 要素で Windows フォーム コントロールをホストするには、Windows フォーム コントロールを Child プロパティに割り当てる必要があります。
WPF で MDI レイアウトを処理し、WPF 子ウィンドウ内に WindowsFormsHost コントロールを配置し、Windows フォーム コントロールを作成したら、それを WindowsFormsHost の子として割り当てる必要があると思います。
WPFのコントロールについては、 MSDN ドキュメントを参照してください。WindowsFormsHost
ドキュメントの最後に、WinForms コントロールを WPF に統合するために使用する方法を示す例があります。あなたがする必要があるのはMaskedTextBox
、あなたのコントロールに変更することだけです: Form1
。
私が理解しているように、WinForm 全体を WPF と相互運用することはできません。WindowsFormHost を介して WPF サーフェスに WinForm コントロールを配置できますが、フォームには配置できません。
WinForm フォームのすべてのコンテンツを WinForm UserControl にパッケージ化できる場合は、これを実行できるはずです。
WPF には MDI のネイティブ サポートがありません。この wpfmdi.codeplex.com またはより複雑なこの chronoswpf.codeplex.com を使用できます。
コントロールを使用WindowsFormHost
すると、WPF で Windows フォーム コントロールを使用できます。このリンクを参照できます。