2010-06-10 4 views
0

Я только что начал очень простое приложение WPF, состоящее из основного большого изображения и четырех меньших изображений.Необычная проблема с файлом XAML WPF

Для того, чтобы помочь с макетом, я создал несколько JPEGs в MSPaint, содержащие изображения -2, -1, 0, +1 и +2 и просто скопировал их в верхний уровень директории проекта.

Сегмент XAML содержит, для пяти изображений:

<Image Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="4" Grid.RowSpan="1" 
    Margin="0,0,0,0" Name="imgPicture" Stretch="Fill" VerticalAlignment="Top" 
    Source="file:///C:/DAndS/Pax/MyDocs/VS2008/Projects/MyProj/zero.jpg" /> 
<Image Grid.Column="1" Grid.Row="4" Grid.ColumnSpan="1" Grid.RowSpan="1" 
    Margin="0,0,0,0" Name="imgPicMinus2" Stretch="Fill" VerticalAlignment="Top" 
    Source="file:///C:/DAndS/Pax/MyDocs/VS2008/Projects/MyProj/minus2.jpg" /> 
<Image Grid.Column="2" Grid.Row="4" Grid.ColumnSpan="1" Grid.RowSpan="1" 
    Margin="0,0,0,0" Name="imgPicMinus1" Stretch="Fill" VerticalAlignment="Top" 
    Source="file:///C:/DAndS/Pax/MyDocs/VS2008/Projects/MyProj/minus1.jpg" /> 
<Image Grid.Column="3" Grid.Row="4" Grid.ColumnSpan="1" Grid.RowSpan="1" 
    Margin="0,0,0,0" Name="imgPicPlus1" Stretch="Fill" VerticalAlignment="Top" 
    Source="file:///C:/DAndS/Pax/MyDocs/VS2008/Projects/MyProj/plus1.jpg" /> 
<Image Grid.Column="4" Grid.Row="4" Grid.ColumnSpan="1" Grid.RowSpan="1" 
    Margin="0,0,0,0" Name="imgPicPlus2" Stretch="Fill" VerticalAlignment="Top" 
    Source="file:///C:/DAndS/Pax/MyDocs/VS2008/Projects/MyProj/plus2.jpg" /> 

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

Property value is not valid. 
Details 
    | 
    V 
    The file plus2.jpg is not part of the project or 
    its 'Build Action' property is not set to 'Resource'. 

Еще если я переименую файл в файл plus3.jpg или plus2x.jpg, у меня нет этой проблемы.

Почему он жалуется на plus2.jpg конкретно?

+1

Возможно ли, что вы ранее добавили, а затем удалили plus2.jpg? – AMissico

+0

Возможно ли, что вы не создали решение между этапами? – AMissico

+0

@ AMissico, я не думаю, что добавил/удалил/добавил. В первый раз я попытался установить свойство source для этого изображения, когда он жаловался, даже если он не жаловался на остальных трех. Мне нужно посмотреть на перестройку. Все, что я делаю, это редактирование XAML/layout на данный момент, я даже не пытался его запустить. Вы должны поместить эти комментарии в качестве ответа, кстати, на всякий случай, если вы правы. На минимальном уровне вы получите вознаграждение за то, что помогли мне, и, если окажется, что вы правы, вы также получите большой зеленый галочку. – paxdiablo

ответ

1
  • Возможно ли, что вы ранее добавили, а затем удалили plus2.jpg?

  • Возможно ли, что вы не создали решение между этапами?

    • Clear ЦСИ, построить решение, установить SRC на исправном изображение, построить решение, установить SRC для неработающего изображения.

    • Очистить src всех изображений, построить решение, установить «Build Action» всех изображений на «None», построить решение, установить build-action в «Resource», построить решение, установить src всех изображений.

  • (скорее всего) Возможно поврежден образ, изображение недействительных цветовой палитры, изображения, сохраненных в формате недопустимого.

    • Смотрите, если вы можете загрузить изображение во время выполнения
    • Загрузка изображений с Resouce редактор и «Сохранить как».
    • Расширение файла не имеет значения, поскольку формат внутренней графики определяет тип изображения. Смысл, если вы создали jpg, но сохранили его как bmp, дизайнер по-прежнему будет загружать изображение правильно.
  • Попробуйте <Image.Source> <BitmapImage UriSource="sampleImages/bananas.jpg" /> </Image.Source>

Я пытался дублировать эту проблему не повезло.Я смог использовать изображения, которые я «добавил», и изображения, в которых я указал src = «файл: /// c: ...». Изображения внутри проекта, с и без набора правил сборки. Даже изображения вне проекта.

Моя другая мысль, есть что-то не так с изображением, но я не добавил комментарий. Тем не менее, теперь, когда я думаю об этом, дизайнер попытается загрузить изображение, как только вы установите src. Если изображение не может быть загружено, будет выбрано исключение. Поскольку вы находитесь во время разработки, вы получаете недопустимое приглашение свойства с сообщением о деталях «obsure».

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

+0

Я не думаю, что это испорченное изображение, так как простое переименование - это все, что требуется, чтобы заставить его работать или не работать. Интересно, что я перевел его на другую машину, и он отлично работает, поэтому, возможно, это сбой с этой установкой. Эта вторая машина будет реальной средой разработчиков, поэтому я могу просто забыть о проблеме. Я оставлю Q открытым на пару дней, чтобы узнать, есть ли у кого-нибудь еще проницательность. – paxdiablo

+0

А, забыл про «простое переименование». – AMissico

+0

Интересно. Перейдите в http://missico.spaces.live.com/blog/cns!7178D2C79BA0A7E3!370.entry и попробуйте сценарий «ClearRecent.vbs». Перед запуском убедитесь, что вы просматриваете код и комментируете любой из вызовов процедур Clear ..., которые вы не хотите запускать. Бьюсь об заклад, это решит проблему. На протяжении многих лет на многочисленных машинах для многочисленных разработчиков исправлено множество проблем. : О) – AMissico

0

На самом деле это не волнует. VS2008 при создании приложений WPF имеет десятки таких предупреждений, и большинство из них исчезает после сборки. Если приложение запускается и работает, оставьте его в покое. Лично я установил около 10-15 исправлений для различных связанных с WPF ошибок в VS2008. VS2010 намного лучше.

Кроме того, вероятно, лучше включить файлы изображений в ресурсы - вы добавите их в проект (добавьте существующий элемент), а затем проверьте, установлено ли действие сборки для ресурса. (щелкните правой кнопкой мыши по этому файлу в обозревателе решений и выберите «Свойства»)