我有以下目录结构
Project
\Images
+view.png
control.xaml
在控件中我有一个由以下XAML定义的按钮:
<Button Click="Search"
Grid.Column="1"
Margin="0,5,5, 0"
HorizontalAlignment="Right">
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<Image Source="pack://application:,,,/images/view.png"
Width="16"
Height="16"
ToolTip="Search"
Cursor="Hand"
Opacity="0.8" />
</ControlTemplate>
</Button.Template>
</Button>
但是,这个包URI方法和“/images/view.png”都不起作用。据我了解,这是this question提出的同一问题。但是,我得到了同样的错误。令人困惑的是,在Visual Studio 2008的设计器中,图像呈现正确,但在调用InitializeComponent()调用时,我得到:
无法将属性“Source”中的字符串'pack:// application:,,, / images / view.png'转换为'System.Windows.Media.ImageSource'类型的对象。找不到资源'images / view.png'。标记文件'RecapSpecEditControl; component / modaltreadgroupdatadialog.xaml'中的对象'System.Windows.Controls.ControlTemplate'出错'第61行位置40。
我认为可能有一个我必须声明的命名空间但是根据msdn site我相信我不需要做那样的事情。
答案 0 :(得分:9)
我实际上有这个工作,但必须将我的源设置为“/ProjectName ;component/images/view.png”因为我将ProjectName作为引用的程序集,因此它与Path:部分相同我在问题中引用的msdn页面。
答案 1 :(得分:6)
将“view.png”的构建操作设置为“资源”而不是“内容”,此问题应该消失。我能够以这种方式重现您的问题,并且在设置为资源时它可以正常工作。
答案 2 :(得分:-3)
Xaml.VB
从Application文件夹和Design Page
调用ImagePrivate Sub LoadImages()
Dim strUri As String
strUri = AppDomain.CurrentDomain.BaseDirectory() & "\NavigationImages\settingsicon.png"
Image2.Source = New BitmapImage(New Uri(strUri))
End Sub
Xaml.VB中的页面加载
Call LoadImages()
Xaml Design Page
Image Name="Image2"Height="32" HorizontalAlignment="Left"