여러 개별 응용 프로그램에서 사용할 리소스 사전 파일 (MenuTemplate.xaml, ButtonTemplate.xaml 등)이 있습니다. 그것들을 응용 프로그램의 어셈블리에 추가 할 수는 있지만 이러한 리소스를 하나의 어셈블리로 컴파일하고 응용 프로그램에서 참조하도록하는 것이 좋습니다.
리소스 어셈블리가 빌드 된 후 내 응용 프로그램의 App.xaml에서 어떻게 참조 할 수 있습니까? 현재 ResourceDictionary.MergedDictionaries를 사용하여 개별 사전 파일을 병합합니다. 제가 그것들을 집회에 가지고 있다면 xaml에서 그들을 어떻게 참조 할 수 있습니까?
체크 아웃팩 URI 구문. 당신은 다음과 같은 것을 원한다.
<ResourceDictionary Source="pack://application:,,,/YourAssembly;component/Subfolder/YourResourceFile.xaml"/>
AppDomain.AssemblyResolve
어셈블리를 찾는 데 도움이됩니다. - Kent Boogaart
예를 들어,이 15 초 응답을 만들기 위해서 -
"common"이라는 WPF 라이브러리에서 "styles.xaml"을 가지고 있고이를 주 응용 프로그램 프로젝트에서 사용하려고한다고 가정 해보십시오.
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Common;component/styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
건배
.NET 4.5와 함께 일하고 있는데이 작업을 수행 할 수 없습니다 ... WPF Custom Control Library를 사용하고있었습니다. 이것은 결국 나를 위해 일했다. ..
<ResourceDictionary Source="/MyAssembly;component/mytheme.xaml" />
출처: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/11a42336-8d87-4656-91a3-275413d3cc19
리소스 전용 DLL은 당신을위한 옵션입니다. 그러나 응용 프로그램을 다시 컴파일하지 않고 리소스를 수정하려는 경우가 아니면 반드시 필요하지는 않습니다. 단 하나의 공통 ResourceDictionary 파일도 옵션입니다. 리소스를 얼마나 자주 변경하는지에 따라 다릅니다.
<ResourceDictionary Source="pack://application:,,,/
<MyAssembly>;component/<FolderStructureInAssembly>/<ResourceFile.xaml>"/>
하여 MyAssembly- 확장없는 어셈블리 이름 만
FolderStructureInAssembly- 리소스가 폴드 상태 인 경우 폴더 구조를 지정합니다.
이 작업을 수행 할 때siteOfOrigin게다가.
WPF는 application : ///과 siteoforigin : ///이라는 두 가지 권한을 지원합니다. application : /// 권한은 응용 프로그램 데이터 파일을 식별합니다. 리소스 및 컨텐트 파일을 포함하여 컴파일 타임에 알려져 있습니다. 그만큼 siteoforigin : /// 기관은 원본 파일의 사이트를 식별합니다. 망원경 다음 그림은 각 기관의 이름입니다.
UWP의 경우 :
<ResourceDictionary Source="ms-appx:///##Namespace.External.Assembly##/##FOLDER##/##FILE##.xaml" />
XAML 사용 :
당신이 다른 사람을 알고 있다면assembly
구조를 원하고resources
...에서기음#코드를 입력 한 다음 아래 코드를 사용하십시오.
ResourceDictionary dictionary = new ResourceDictionary();
dictionary.Source = new Uri("pack://application:,,,/WpfControlLibrary1;Component/RD1.xaml", UriKind.Absolute);
foreach (var item in dictionary.Values)
{
//operations
}
산출:우리가 사용하고 싶다면ResourceDictionary
RD1.xaml
프로젝트WpfControlLibrary1
으로StackOverflowApp
계획.
프로젝트 구조:
코드 출력 :
추신:모든ResourceDictionary
파일에 있어야합니다.Build Action
같이 'Resource
'또는'Page
'.
C #사용 :
누군가가 순수하게 해결책을 원한다면C #코드그때 내이 해결책.