我正在使用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"/>
答案 0 :(得分:2)
我通过使用以下作为图像源解决了这个问题:
Source="/Foo.Bar;component/Assets/Images/Controls/cancel.png"
虽然我仍然不确定问题的根源。
答案 1 :(得分:0)
之前我遇到过类似的问题,最后我忽略了你突出显示的编译器警告,它只是在运行时工作。通常,对我来说问题是,在编译时,正在从生成警告的XAML文件的目录中读取映像的路径,这是错误的,但在运行时,从控件中读取路径正在使用Style,它通常可以正常使用。
你有资源字典文件中的样式吗?尝试,只是为了测试,嵌入按钮的内联样式,看它是否有效。