2010-03-09 3 views
2

У меня есть библиотека классов (mylibrary), которая имеет ресурс под названием «close.png». Я использовал рефлектор redGate, чтобы подтвердить, что ресурс действительно присутствует в dll. Теперь я использую mylibrary.dll в проекте, где я попытаться извлечь этот «close.png» ресурс, как это:проблема загрузки ресурса из библиотеки классов

BitmapImage crossImage = new BitmapImage(); 
crossImage.BeginInit(); 
crossImage.UriSource = new Uri(@"/mylibrary;component/Resources/close.png", UriKind.RelativeOrAbsolute); 
crossImage.EndInit(); 

Этот BitmapImage crossImage затем используется как:

Button closeButton = new Button() 
{ 
    Content = new System.Windows.Controls.Image() 
    { 
     Source = crossImage 
    }, 
    MaxWidth = 20, 
    MaxHeight = 20 
}; 

На этом я не получаю исключений, но кнопка не показывает изображение. Кроме того, я вижу информацию об исключении, если я исследую «контент» кнопки в отладчике.

ответ

4

Это встроенный ресурс? (Не может сделать это до от вопроса)

Если да, то есть хороший учебник по MSDN

//not tested, but should be like this 
BitmapImage = <namespace>.Properties.Resources.<imagename>; 
+0

В редакторе ресурсов есть также ComboBox называется «Модификатор доступа» рядом с «Добавить ресурс '. Установите его в * public * для доступа к ресурсу из другой сборки. – Oliver

+0

И тогда вы должны использовать GetAssembly, см. Больше здесь: http://www.csharper.net/blog/getting_an_embedded_resource_file_out_of_an_assembly.aspx – RvdK

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