문제

Winforms에서 WPF Resourcedictionaries를 읽을 수 있습니까? 그렇다면 어떻게?

도움이 되었습니까?

해결책

WPF 프로젝트에 리소스 사전을 추가하면 빌드 작업이 자동으로 페이지로 설정됩니다. 이는 컴파일러가 BAML 스트림을 생성하여 어셈블리의 자원에 추가 함을 의미합니다.

WPF는 BAML 스트림을 읽는 내장 기능이 있지만 API는 공개되지 않으므로 반사를 통해 내부 메소드에 액세스하는 작은 도우미 클래스를 작성해야합니다.

public static class BamlReader
{
    public static object Load(Stream stream)
    {
        ParserContext pc = new ParserContext();
        MethodInfo loadBamlMethod = typeof(XamlReader).GetMethod("LoadBaml", 
            BindingFlags.NonPublic | BindingFlags.Static)
        return loadBamlMethod.Invoke(null, new object[] { stream, pc, null, false });
    }
}

// Usage:
StreamResourceInfo sri = System.Windows.Application.GetResourceStream(
    new Uri("/MyAssemblyName;component/MyResourceDict.xaml", UriKind.Relative));
    ResourceDictionary resources = (ResourceDictionary)BamlReader.Load(sri.Stream);

원천: Winforms에서 WPF Resourcedictionaries를 읽는 방법

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top