2009-12-09 4 views
4

У меня есть следующая структура директорийпакет URI и путь не решение изображения в WPF

Project 
\Images 
+view.png 
control.xaml 

и в контроле У меня есть кнопка, определенная следующий XAML:

<Button Click="Search" 
     Grid.Column="1" 
     Margin="0,5,5, 0" 
     HorizontalAlignment="Right"> 
    <Button.Template> 
     <ControlTemplate TargetType="{x:Type Button}"> 
      <Image Source="pack://application:,,,/images/view.png" 
        Width="16" 
        Height="16" 
        ToolTip="Search" 
        Cursor="Hand" 
        Opacity="0.8" /> 
     </ControlTemplate> 
    </Button.Template> 
</Button> 

Однако ни это пакетный URI или «/images/view.png». Как я понимаю, это тот же вопрос this question повышает. Однако я получаю ту же ошибку. Запутанным является то, что в конструкторе в Visual Studio 2008, изображение отображается правильно, но на вызов к InitializeComponent() вызов, я получаю:

Невозможно преобразовать строку «пакет: // приложение: ,,, /images/view.png 'в атрибуте' Источник 'объекту типа' System.Windows.Media.ImageSource '. Не удается найти ресурс 'images/view.png'. Ошибка в объекте «System.Windows.Controls.ControlTemplate» в файле разметки «RecapSpecEditControl; компонент/modaltreadgroupdatadialog.xaml» Строка 61 Позиция 40.

Я подумал, что, может быть, там было пространство имен, которое я должен был объявить, но по на msdn site Я считаю, что мне не нужно ничего делать.

ответ

9

Я действительно получил это, чтобы работать, но должен был установить свой источник в «/ProjectName;component/images/view.png». Поскольку у меня есть ProjectName как ссылка, это то же самое, что и часть Path: страницу msdn, на которую я ссылался в вопросе.

+0

+1: вот и все! :) –

6

Задайте действие Build для «view.png» в ресурс вместо содержимого, и эта проблема должна исчезнуть. Я смог воспроизвести вашу проблему таким образом, и он работает правильно, когда задан как ресурс.

+0

Я думал, что вы можете что-то сказать, но мое действие сборки на изображении уже настроено на ресурс. Как насчет каталога «Копировать в вывод», что у вас есть? –

+0

«Не копировать». Интересно. Я точно думал, что это так, как это было показано в дизайнере, и дал мне ту же ошибку во время выполнения, когда я создал ее как Content. –

+1

Ваш ответ дал полный смысл, и я был уверен, что увижу, что мое действие сборки было неправильным. –

-3

Xaml.VB

Вызовите изображение из папки приложений и дизайна Page

Private Sub LoadImages() 
     Dim strUri As String 
     strUri = AppDomain.CurrentDomain.BaseDirectory() & "\NavigationImages\settingsicon.png" 
     Image2.Source = New BitmapImage(New Uri(strUri)) 
    End Sub 

нагрузки Страница в Xaml.VB

Call LoadImages()

Xaml Дизайн страницы

Image Name="Image2"Height="32" HorizontalAlignment="Left"