2011-06-14 4 views
0

런타임시 자원 사전의 XAML을 구문 분석 할 수있는 시나리오가 있습니다. 다음과 같이 :여러 컨트롤에서 동일한 ResourceDictionary 개체 사용

var parsedResourceDictionary = XamlReader.Parse(xaml) as ResourceDictionary; 

이 모든 것은 사용자 지정 리소스 사전 (ResourceDictionary에서 파생 된 기본 클래스) 내에서 발생합니다. 구문 분석 후, 나는 XAML 내가 파서 출력을 캐시 단지 MergedDictionary 필드에 추가 메소드를 호출 할 꽤 많은 시간이 소요 구문 분석하기 때문에

MergedDictionaries.Add(parsedResourceDictionary); 

를 호출합니다. 지금, 내 질문은이 parsedResourceDictionary에 대한 참조를 유지하고 나중에 추가 할 수 있는지입니다.

감사합니다.

답변

0

난 그냥 내가 내장 XAML에서 ResourceDictionary에 만든 작은 테스트 응용 프로그램을 만든
0

예. 한 번 읽은 다음 어딘가에 변수에 넣고 나중에 다시 읽지 않고 사용하십시오. 너 해봤 니? Button_Click 이벤트에서

public partial class MainWindow : Window 
{ 
    public static ResourceDictionary CachedResourceDictionary; 

    public MainWindow() 
    { 
     if (CachedResourceDictionary == null) 
     { 
      CachedResourceDictionary = new ResourceDictionary 
      { 
       Source = 
        new Uri("/ResourceDictionaryCache;component/Dictionary1.xaml", 
          UriKind.RelativeOrAbsolute) 
      }; 
     } 
     Resources.MergedDictionaries.Add(CachedResourceDictionary); 

     InitializeComponent(); 
    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     var toOpen = new MainWindow(); 
     toOpen.Show(); 
    } 
} 

난 그냥있는 다음

MainWindow를의 새로운 인스턴스를 생성 :