4

我有以下目录结构

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”都不起作用。据我了解,这与这个问题提出的问题相同。但是,我得到同样的错误。令人困惑的是,在 Visual Studio 2008 的设计器中,图像正确呈现,但在调用 InitializeComponent() 时,我得到:

无法将属性“Source”中的字符串“pack://application:,,,/images/view.png”转换为“System.Windows.Media.ImageSource”类型的对象。找不到资源“images/view.png”。标记文件“RecapSpecEditControl;component/modaltreadgroupdatadialog.xaml”第 61 行位置 40 中的对象“System.Windows.Controls.ControlTemplate”出错。

我想也许有一个我必须声明的命名空间,但根据msdn 网站,我相信我不必做这样的事情。

4

3 回答 3

9

我实际上得到了这个工作,但必须将我的源设置为“/ProjectName;component/images/view.png” 因为我将 ProjectName 作为引用的程序集,所以这与 msdn 页面上的 Path: 部分相同我在问题中提到。

于 2009-12-09T16:30:45.423 回答
6

将“view.png”的构建操作设置为资源而不是内容,这个问题应该会消失。我能够以这种方式重现您的问题,并且在设置为资源时它可以正常工作。

于 2009-12-09T15:47:25.167 回答
-3

Xaml.VB

从应用程序文件夹和设计页面调用图像

Private 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 设计页面

Image Name="Image2"Height="32" HorizontalAlignment="Left" 
于 2011-03-17T09:50:37.720 回答