WinFormsアプリケーションのElementHostでホストしようとしているWPFコントロールに問題があります。コントロールは、もともと私が別のテストプロジェクトで開発した見た目のないカスタムコントロールです。これはWPFアプリケーションでした。そこに明らかにうまく動作しますが、私のWinFormsアプリケーションでは、ElementHostが表示される空白の灰色のボックスになります。WPFコントロールがWinFormsアプリケーションのElementHostに表示されない
ここでは、作成移入、および親コントロールにElementHostを追加するための私のC#コードです:
// This is my WPF control
m_TabHostPanel = new TabHostPanel();
m_ElementHost = new ElementHost
{
Child = m_TabHostPanel,
Dock = DockStyle.Top,
Height = 34
};
this.Controls.Add(m_ElementHost);
、必要に応じて親コントロールは、実行時に追加および削除された他のWinFormsコントロールが含まれています。これらはすべてDockStyle.Fillに設定されたDockで単独でホストされます。このように、私は1つを追加するたびに私はそれが正しくレンダリングすることを確認するにはZオーダーの背面にElementHostを送る:
m_ElementHost.SendToBack();
したがって、私は空域の問題に実行していないよ知っている、またはのようなものそれ。
私が不思議をした一つのことはこれです:
<Application x:Class="WpfTestApp.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Application/UserInterface/DataTemplates/TabModelDataTemplate.xaml"/>
<ResourceDictionary Source="Application/UserInterface/Styles/HoverablePressableButtonStyle.xaml"/>
<ResourceDictionary Source="Application/UserInterface/Styles/MiniControlButtonStyle.xaml"/>
<ResourceDictionary Source="Application/UserInterface/Styles/TabCloseButtonStyle.xaml"/>
<ResourceDictionary Source="Application/UserInterface/Styles/TabScrollLeftButtonStyle.xaml"/>
<ResourceDictionary Source="Application/UserInterface/Styles/TabScrollRightButtonStyle.xaml"/>
<ResourceDictionary Source="Application/UserInterface/Styles/TabListDropDownButtonStyle.xaml"/>
<ResourceDictionary Source="Application/UserInterface/Styles/TabHostComboBoxStyle.xaml"/>
<ResourceDictionary Source="Application/UserInterface/Styles/TabButtonStyle.xaml"/>
<ResourceDictionary Source="Application/UserInterface/Styles/TabHostPanelStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
I:元のプロジェクト内のすべての私のlooklessコントロールのスタイルはこのように、App.xamlでアプリケーションのリソースディクショナリにマージされましたApp.xamlをWinFormsプロジェクトに移行しましたが、ビルドアクションはページに設定されています。私はそれをApplicationDefinitionに設定すると、アプリケーションに複数のエントリーポイントがあると言うエラーが出ますが、これは意味がありますが、スタイルなどが拾われているのか疑問です。そうでなければ、私のコントロールがなければならない空白の灰色の四角形が表示されている理由を説明できるかもしれません。 WPFコントロールで見ることができるように、これらのスタイルをWinFormsアプリケーションにどうやって取得するのですか?
これは.NET Fx 3.5でも動作しているはずです。
とにかく、今は困惑していますので、どんな助けもありがとうございます。
多くの感謝!
返信用バート
はどのようにアプリケーションクラスの新しいインスタンスを作成するのですか? – Prof
あなたはちょうどそれを新しいことができます。 –