Как получить доступ к ResourceDictionary
из другого проекта в решении?доступ ResourceDictionary для разных проектов в решении
В файле Solution содержится несколько проектов. Один из этих проектов называется «Common» и содержит ресурс под названием SharedResource.xaml
.
SharedResource.xaml
в Коммон:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d">
<ImageBrush x:Key="UserIcon" ImageSource="/Images\icon_user.png"/>
</ResourceDictionary>
Это, как я пытался сделать SharedResource словарь использовать в одном из моих UserControls.
<UserControl x:Class="MasterDataManagement.View.DisplayMasterDataView"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:command="http://www.galasoft.ch/mvvmlight"
xmlns:common="clr-namespace:Common;assembly=Common"
mc:Ignorable="d"
d:DesignWidth="800" d:DesignHeight="600" d:DataContext="{Binding DisplayMasterDataViewModel, Source={StaticResource ViewModelLocator}}">
<UserControl.Resources>
<ResourceDictionary> <!-- ERROR Each dictionary entry must have an associated key.-->
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Common;component/Resources/SharedResources.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<!-- Removed Content -->
</Grid>
</UserControl>
К сожалению, этот подход не работает, и я не уверен, что я пропустил. Приведенный выше код вызывает это сообщение об ошибке: каждая запись словаря должна иметь связанный ключ.
Любые мысли?
Примечания:
- Я не могу поставить ResourceDictionary в
App.xaml
, потому что я создаю прямые экземпляры UserControl (что-то вродеUserControl uc = new DisplayMasterDataView()
). Только проект App.xaml из проекта, который настроен как проект StartUp, «выполнен». Мое решение состоит из одного MainProject (который задан как StartUp Project) и нескольких других проектов, которые используются в качестве модулей в MainProject. Теперь мне нужно использовать эти модули в моем основном проекте, который выполняется следующим образом:
UserControl uc = new DisplayMasterDataView();
Я считаю, что создание экземпляра UserControl из другого проекта не выполняет App.xaml
в проекте, которые состоят в UserControl. Поэтому для определения моих ресурсов я должен использовать <UserControl.Resources> </UserControl.Resources>
. Я только что упомянул об этом, потому что в большинстве примеров проектов для определения ресурсов используется App.xaml
.
Опубликованный XAML завершен? Потому что я подозреваю, что вы определили некоторые ресурсы ниже ресурсного словаря, для которого вы не установили 'x: Key'. Или может быть в вашем ResourceDictionary есть еще один элемент, кроме Image, для которого вы не установили значение ключа. –
SharedResource.xaml завершен, он содержит только один элемент с x: Key UserIcon. – Joel
А как насчет 'UserControl.Resources'? –