문제

WPF USERCONTROL이 있는데, 이는 ElementHostControl 내에서 WinForms 컨트롤에 사용합니다. 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 창과 컨트롤 전체에서 사용할 수 없기 때문에 필요합니다. 이것은 내가 여기에 대해 알게되었습니다

두 세계의 최고를 결합하는 방법이 있습니까? 애플리케이션이 충돌하는 것을 방지하면서 자원을 유지 하시겠습니까?

도움이 되었습니까?

해결책

XAML을 통해 각 창에 수동으로 Resourcedictionary를 추가하여 결국 해결했습니다. 이런 식으로 내 winforms의 usercontrol은 영향을받지 않습니다.

여전히 정확히 이해하지 못합니다 불행히도 그것은 추락했다.

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/KolonistenClient;component/KolonistenResourceDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top