在Silverlight 4应用程序中显示新图像资源时出现问题

时间:2010-07-13 10:23:25

标签: silverlight xaml silverlight-4.0

我正在使用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'是   不属于项目或其“构建”   Action'属性未设置为   '资源'

我已经仔细检查了,并且它的构建操作设置为“资源”。我卸载了项目并查看了csproj文件,这个图像有一个构建条目,我错过了什么?我没有对这张图片做任何不同的事情。我和其他图片在同一个文件夹中有效。

更新

如果我使用以下内容,我可以在设计时看到图像,但不能在运行时看到任何想法?

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

2 个答案:

答案 0 :(得分:2)

我通过使用以下作为图像源解决了这个问题:

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

虽然我仍然不确定问题的根源。

答案 1 :(得分:0)

之前我遇到过类似的问题,最后我忽略了你突出显示的编译器警告,它只是在运行时工作。通常,对我来说问题是,在编译时,正在从生成警告的XAML文件的目录中读取映像的路径,这是错误的,但在运行时,从控件中读取路径正在使用Style,它通常可以正常使用。

你有资源字典文件中的样式吗?尝试,只是为了测试,嵌入按钮的内联样式,看它是否有效。