2011-03-10 4 views
1

WPF 컨트롤이 Windows Form에 포함되어있어 제대로 작동합니다. 하지만 WPF 프로젝트의 모든 스타일은 Themes/Generic.xaml 안에 있습니다. Windows Forms ElementHost 컨트롤 안에 WPF 컨트롤을 포함하면 이러한 스타일이 선택되지 않습니다.WinForms에 포함 된 WPF 컨트롤에서 Generic.xaml 작동

리소스 섹션에 스타일을 명시 적으로 포함하도록 WPF 뷰를 변경해야합니까? 아니면 generic.xaml 파일을 자동으로 선택해야합니까?

답변

4

테마/Generic.xaml이 다른 어셈블리입니까?

문제는 응용 프로그램이 스타일이 정의 된 ResourceDictionary를 찾지 못하는 것입니다. 당신이 할 수있는 일

이 같은 정적 SharedDictionaryManager 클래스를 만드는 것입니다 :

public static class SharedDictionaryManager 
{ 
    private static ResourceDictionary _sharedDictionary; 
    internal static ResourceDictionary SharedDictionary 
    { 
     get 
     { 
      if (_sharedDictionary == null) 
      { 
       System.Uri resourceLocater = 
        new System.Uri("/assembly;component/Themes/Generic.xaml", 
            System.UriKind.Relative); 

       _sharedDictionary = 
        (ResourceDictionary)Application.LoadComponent(resourceLocater); 
      } 

      return _sharedDictionary; 
     } 
    } 
} 

을 그리고 당신이 리소스 사전을 추가 HostControl를 만들 때 제어 할 :

ctrl.Resources.MergedDictionaries.Add(SharedDictionaryManager.SharedDictionary); 

당신이 만약을 둘 이상의 리소스 사전을 가지면 각각에 대해 이와 같은 속성 하나를 가질 수 있습니다. 또는 모든 리소스 사전을로드 한 다음 모든 사전을 병합하는 속성을 가질 수 있습니다.

이제 원하는 스타일을 자동으로 선택해야합니다.

관련 문제