WPF, изображение ресурса не правильно расположено - PullRequest
1 голос
/ 13 сентября 2010

У меня есть изображение в проекте, добавленное в качестве ресурса, если я пытаюсь добавить его в свой проект WPF, оно всегда заканчивается

Error 1 The file images\background.png is not part of the project or its 'Build Action' property is not set to 'Resource'. C:\Users\Martinek\Documents\My\Learning.Dot.Net\WPF.8\WPF.8\Window1.xaml 21 47 WPF.8

Я также пытался ссылаться на полный путь "file: ///" и т. Д. И получал те же результаты, даже если изображение добавлено как ресурс

См. Также код XAML с результатами

<ImageBrush AlignmentX="Left" ImageSource="images/background.png" Stretch="Fill" />

Прикрепленное изображение: http://i.stack.imgur.com/bSjwi.png

Ответы [ 4 ]

2 голосов
/ 13 сентября 2010

Я заметил, что для параметра Copy to Output Directory установлено значение «Не копировать».

Попробуйте изменить его на «Копировать всегда» или «Копировать, если новее» и посмотрите, поможет ли это.

Обновление

Я только что написал пример приложения, чтобы попытаться выяснить это.Кажется, он работает правильно, поэтому я опубликую свой код здесь, надеясь, что он поможет.

<Grid>
  <Grid.Background>
    <ImageBrush x:Name="brush" AlignmentX="Left" ImageSource="images/have_the_dumb.jpg" Stretch="Fill" />
  </Grid.Background>
</Grid>

В коде позади я добавил некоторый код трассировки, чтобы увидеть, где ImageBrush считает, что егоImageSource is.

    public ImageDisplay()
    {
      Trace.Listeners.Add(new TextWriterTraceListener(@"c:\happyface.trace.log"));
      Trace.AutoFlush = true;

      InitializeComponent();

      Trace.WriteLine(String.Format("Image thinks it's in {0}", brush.ImageSource.ToString()));
    }

При запуске в режиме отладки вы должны увидеть строку, записанную в окно вывода (а также в файл * .trace.log) с URI, где он считаетизображение находится.

Я запустил его с изображением в папке с изображениями в корне моего решения.Я попытался сделать это с изображением, установленным как «Содержимое» (с «Копировать, если новее»), а также как «Ресурс» (с не копировать), и оно успешно запустилось оба раза.

Надеюсь, это указывает на васправильное направление.

1 голос
/ 13 сентября 2010
<ImageBrush AlignmentX="Left" ImageSource="pack://application:,,,/[ASSEMBLY_NAME];component/Images/background.png" Stretch="Fill" />

[ASSEMBLY_NAME] - это имя dll или исполняемого файла, который содержит ресурс (без расширения).

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

Попробуйте синтаксис pack :

<ImageBrush ImageSource="pack://application:,,,/Images/background.png" />
0 голосов
/ 13 сентября 2010

У меня есть две идеи - использовать обратную косую черту вместо прямой. (Это не должно иметь значения - но это то, что работает здесь ...)

Другая идея заключается в том, что путь к вашему проекту выглядит испорченным - попробуйте скопировать решение в корень жесткого диска. Возможно, вы столкнулись с какой-то странной проблемой с путем, содержащим слишком много точек / слэшей или чем-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...