Итак, я создал пользовательский элемент управления WPF как часть более крупного решения. Я создаю другое приложение, где этот пользовательский элемент управления будет работать хорошо. Я добавил ссылку на DLL из нового приложения, подключил ее и скомпилировал. Окно загружается, и я вижу изображение, которое говорит мне, что не может найти. После отображения главного окна и заполнения пользовательского элемента управления возникает исключение, говорящее ...
System.IO.IOException: «Не удается найти ресурс» resources / nosortnofilter.png '.'
Пользовательский элемент управления - это DataGrid с некоторыми добавленными расширениями. Столбец, который он бросил, был "id". Как вы можете видеть на изображении, красная стрелка показывает изображение nosortnofilter.png, отображаемое во всех столбцах. Так почему же оно вызывает это исключение?
Строка кода, которую он выдает, находится здесь.
If ImageName = "" Then ImageName = "NoSortNoFilter"
img.Source = New BitmapImage(New Uri("pack://application:,,,/Resources/" & ImageName & ".png"))
Так что все выглядит хорошо с моей точки зрения. Надеясь, что кто-то может увидеть то, что я не вижу.
РЕДАКТИРОВАТЬ: Найдено решение . Это работает. Но он все еще не отвечает на вопросы, почему оригинальный URI в формате pack: // работал только с оригинальным решением.
img.Source = New BitmapImage(New Uri($"Resources/{ImageName}.png", UriKind.Relative))
РЕДАКТИРОВАТЬ: Спасибо rfmodulator за предоставленную мне правильную информацию URI для DLL.
img.Source = New BitmapImage(New Uri("pack://application:,,,/AdvancedSortFilterDataGrid;component/Resources/" & ImageName & ".png"))