WPF - C#:この要素は現在、任意のコンテキストに関連付けられていません
-
20-09-2019 - |
質問
私はElementHostControl内のWinFormsコントロールに使用WPFユーザーコントロールを持っています。 Windowsフォームがまだ開いている間、それから私は、WPFウィンドウを起動します。私は、WPFウィンドウを閉じて、そして私のWPFユーザーコントロールに子要素を追加しようとすると、それは例外で(子要素の)「のInitializeComponent()」でクラッシュします:
「型 『System.Configuration.ConfigurationErrorsException』の最初のチャンス例外がSystem.Configuration.dllで発生しました。 追加情報:この要素が現在すべてのコンテキストに関連付けられていません "
それがなぜ起こるか私が見つけたが、私はこの問題を解決する方法がわかりません。私はこのコードを省略した場合:
public static void EnsureApplicationResources()
{
if (Application.Current == null)
{
// create the Application object
new Application();
string assemblyName = System.IO.Path.GetFileNameWithoutExtension(
Assembly.GetExecutingAssembly().ManifestModule.Name);
// merge in your application resources
Application.Current.Resources.MergedDictionaries.Add(
Application.LoadComponent(new Uri("/KolonistenClient;component/KolonistenResourceDictionary.xaml", UriKind.RelativeOrAbsolute))
as ResourceDictionary);
}
}
そして、すべてが正常です。私は私のためのResourceDictionary(したがってまた私の定義されたスタイルとテンプレート)はWPFウィンドウとコントロール全体でそれ以外は使用できませんという事実を、しかしあることを必要としています。 >
両方の長所を結合する方法はありますか?クラッシュからアプリケーションを防止しながら、私のResourceDictionaryを維持?
解決
私はXAMLを介して手動で各ウィンドウでのResourceDictionaryを追加することによって、最終的にそれを解決しました。このように私のWinFormsでのUserControlは影響を受けませんとどまります。
のそれはしかし、残念ながら墜落した理由ます。は、まだ正確にを理解していません
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/KolonistenClient;component/KolonistenResourceDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>