【问题标题】:Pack URI and path not resolving image in WPF打包 URI 和路径不解析 WPF 中的图像
【发布时间】:2009-12-09 15:34:53
【问题描述】:

我有以下目录结构

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”第 61 行位置 40 中的对象“System.Windows.Controls.ControlTemplate”出错。

我认为可能有一个命名空间我必须声明,但根据msdn site,我相信我不必做这样的事情。

【问题讨论】:

    标签: wpf image xaml pack-uri


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我以为您可能正在做某事,但我对图像的构建操作已设置为资源。 Copy to Output 目录呢,你把它设置成什么?
      • '不要复制'。有趣的。我确信就是这样,因为它显示在设计器中,并且在我将它构建为内容时在运行时给了我完全相同的错误。
      • 你的回答完全有道理,我确信我会看到我的构建操作是错误的。
      • 找到了解决方案,但您的解决方案绝对值得一提,因为在您展示的正确情况下,您的解决方案可能是一个可能的答案。感谢您的帮助。
      • +1 为我指明了正确的方向。与 OP 类似的问题,但我将“嵌入式资源”的构建操作切换到“资源”更正了。
      【解决方案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" 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-09
        • 1970-01-01
        • 2016-08-03
        • 1970-01-01
        相关资源
        最近更新 更多