Проблема с отображением нового ресурса изображения в приложении Silverlight 4

У меня есть приложение Silverlight, над которым я работаю. У меня есть несколько различных пользовательских стилей кнопок, которые используют ContentTemplate для отображения изображения как кнопки, например:

<Style x:Key="CancelButtonStyle" TargetType="Button">
    <Setter Property="Cursor" Value="Hand"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Grid>
                    <Image Source="Assets/Images/Controls/cancel.png"/>
                    <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

cancel.png - это недавно добавленное изображение, которое не отображается. Если я добавлю простое изображение на страницу с исходным кодом, установленным для этого изображения, я получу подчеркивание в средстве просмотра дизайна XMAL с предупреждением

Файл Assets / Images / Controls / cancel.png не является частью проекта или его свойство Build Action не имеет значения Resource.

Я дважды проверил, и действие сборки установлено на «Ресурс». Я выгрузил проект и просмотрел файл csproj, и для этого изображения есть запись сборки, что я пропустил? Я не сделал ничего другого с этим изображением, которое у меня есть с другими изображениями в той же папке, которые работают.

Обновить

Если я использую следующее, я могу видеть изображение во время разработки, но не во время выполнения, какие-нибудь идеи?

<Image Source="Foo.Bar;component/Assets/Images/Controls/cancel.png" Stretch="None"/>

person Fermin    schedule 13.07.2010    source источник


Ответы (2)


Я решил проблему, используя в качестве источника изображения следующее:

Source="/Foo.Bar;component/Assets/Images/Controls/cancel.png" 

Хотя я до сих пор не уверен в корне проблемы.

person Fermin    schedule 12.08.2010
comment
Что должен /Foo.Bar; быть? должен ли источник быть не просто путем? (у меня аналогичная проблема) - person Santi Peñate-Vera; 02.02.2015
comment
@ SantiPeñate-Vera - Прошло 4 или 5 лет с тех пор, как я делал какие-либо silverlight, но если я правильно помню, то /Foo.Bar - это пространство имен изображения, поскольку это встроенный ресурс. - person Fermin; 03.02.2015

У меня были подобные проблемы раньше, я проигнорировал предупреждение компилятора, которое вы выделили, и оно просто сработало во время выполнения. Часто проблема для меня заключалась в том, что во время компиляции путь к изображению читался из каталога файла XAML, который генерирует предупреждение, что неверно, но во время выполнения путь считывается из элемента управления, который использует стиль, который часто просто работает.

У вас есть свой стиль в файле словаря ресурсов или что-то в этом роде? Попробуйте просто для теста встроить стиль вашей кнопки, посмотрите, работает ли он.

person Mark    schedule 13.07.2010
comment
Спасибо за это. Я попытался добавить стиль в строку, а не в ресурс, но возникла та же проблема. В конце концов, я использовал следующее, чтобы заставить его работать: Source = / Foo.Bar; component / Assets / Images / Controls / cancel.png - person Fermin; 14.07.2010
comment
ах эти маленькие порезы - большая боль! - person Mark; 15.07.2010