2010-11-27 3 views
0

У меня есть report.xaml страница, где я определил некоторые локальные ресурсы.Silverlight ResourceDictionary problem

<UserControl.Resources> 
<ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries > 
     <ResourceDictionary Source="/My.Namespace;component/Resources/Converters.xaml" /> 
     <ResourceDictionary Source="/My.Namespace;component/Resources/GlobResources.xaml" /> 
     <ResourceDictionary Source="/My.Namespace;component/Resources/ReportingResources.xaml" /> 
    </ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 
</UserControl.Resources> 

В этом же файле reports.xaml у меня есть элемент управления содержимым, как так ...

<ContentControl 
Content="{Binding}" 
ContentTemplate="{Binding Converter={StaticResource reportTemplateSelector}, Path=CurrReportType}" 
Margin="0" 
/> 

Теперь в моем преобразователе я загрузить файл ReportingResources.xaml ресурсов со следующими строками кода

ResourceDictionary reportTemplate = new ResourceDictionary(); 
reportTemplate.Source = new Uri("/My.Namespace;component/Resources/ReportingResources.xaml", UriKind.Relative); 
template = reportTemplate[Report_Style] as DataTemplate; 
return template; 

«Report_Style» на самом деле будет переменной, которая будет установлена ​​в методе Convert преобразователя reportTemplateSelector до вызывания вышеуказанных строк.

Проблема заключается в том, что ReportingResources.xaml зависит от файла ресурсов GlobResources.xaml для другого содержимого. Как сделать содержимое из GlobResources.xaml доступным для файла ReportingResources.xaml в строках кода выше?

Спасибо за ваше время ...

+0

I» Предполагая, что это библиотека, которую вы строите на основе того, что ваши ресурсные словари добавляются как ресурс, а не контент. Это верно? Его важная деталь, потому что в приложении вы должны использовать App.xaml для решения этой проблемы. – AnthonyWJones 2010-11-27 14:05:41

ответ

0

вы пробовали ....

Файл ресурсов может объединить другие файлы ресурсов:

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="ResourceB.xaml"/> 
    </ResourceDictionary.MergedDictionaries> 

    <Style x:Name="MyButtonStyle" TargetType="Button"> 
     <Setter Property="Background" Value="red"/> 
    </Style> 

</ResourceDictionary> 

Взятые из Silverlight 3,0 Split styles and templates into different files and merge resources

Смежные вопросы