Ресурс, на который есть ссылка в пользовательском элементе управления, не отображается, если на пользовательский элемент управления ссылаются в другой сборке. - PullRequest
2 голосов
/ 10 сентября 2010

у меня 3 сборки:

Number 1 - ResourceAssembly, которая содержит подпапку Images с 1 изображением в ней (build action = resource). В этой подпапке находится ResourceDictionary с действием сборки, установленным на ресурс. Словарь ресурсов содержит следующее -

<BitmapImage x:Key="BluePlus_48x48_72" UriSource="112_Plus_Blue_48x48_72.png"/>

Номер 2 - узел управления wpf с одним пользовательским контролем, который называется UserControl1. В ресурсах этого usercontrol я загружаю словарь ресурсов из сборки 1 и использую изображение в нем.

<ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/ResourcesAssembly;component/Images/ImagesDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

<Image Source="{DynamicResource BluePlus_48x48_72}" Height="48" Width="48"/>

Изображение отображается правильно.

Номер 3 - Основное приложение сборки. В MainWindow.xaml я ссылаюсь на сборку Project1 и вставляю UserControl1.

xmlns:p1="clr-namespace:Project1;assembly=Project1"
<p1:UserControl1 Height="60" Width="60"/>

Однако изображение не появляется. Нет ошибок времени компиляции или ошибок, выводимых в окно вывода во время выполнения. Я в недоумении, почему изображение не появляется. Есть мысли?

Спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 11 сентября 2010

Я думаю, вам нужно добавить ссылку на проект ResourceAssembly в вашем основном приложении.Или, по крайней мере, файл ResourceAssembly.dll находится в той же папке, что и исполняемый файл вашего основного приложения.

0 голосов
/ 10 сентября 2010

Попробуйте дать ссылку на ресурс, как показано ниже.

<ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/YourAssembly.Name;component/Images/ImagesDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

<Image Source="{StaticResource BluePlus_48x48_72}" Height="48" Width="48"/>

Примечание: Кроме того, не забывайте / в Source="/.

НТН

...