2

ElementHostControl内のWinFormsコントロールで使用するWPFUserControlがあります。次に、Windowsフォームが開いたままの状態でWPFウィンドウを起動します。次に、WPFウィンドウを閉じて、子要素をWPF UserControlに追加しようとすると、次の例外を除いて、(子要素の) "InitializeComponent()"でクラッシュします。

「System.Configuration.dllでタイプ'System.Configuration.ConfigurationErrorsException'の最初のチャンスの例外が発生しました。追加情報:この要素は現在、どのコンテキストにも関連付けられていません。」

なぜそれが起こるのかはわかりましたが、問題を解決する方法がわかりません。このコードを省略した場合:

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を保持しますか?

4

1 に答える 1

0

最終的には、xamlを使用して各ウィンドウにResourceDictionaryを手動で追加することで解決しました。このようにして、WinFormsのUserControlは影響を受けません。

残念ながら、なぜクラッシュしたのかはまだ正確にはわかりません。

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/KolonistenClient;component/KolonistenResourceDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>
于 2010-01-16T08:52:41.623 に答える