2011-10-12 30 views
2

在XAML中加载图像非常容易:WPF中编程资源的编程方式

<Image Source="Resources/Images/pic.png" />

我想知道有一种简单的编程方式吗? 我发现了以下解决方案(花了半天时间):

Uri uri = new Uri("pack://application:,,,/" + 
    Assembly.GetExecutingAssembly().FullName + 
    ";component/Resources/Images/pic.png", UriKind.Absolute); 
BitmapImage img = new BitmapImage(uri); 
Image im = new Image(); 
im.Source = img; 
Grid.SetColumn(im, 1); 
grid.Children.Add(im); 

对我来说,它看起来很丑陋而且很像COM。 它没有.NET FCL(仔细和彻底思考)类库的味道。为什么我们应该使用像“pack:...”这样的字符串呢?枚举要好得多(一种Resources.Local)。

我希望有更优雅的方式来完成这项工作。谢谢。

+0

@AngelWPF:XAML是很好的人扭曲的大脑,但你建议的代码抛出异常与的InnerException : “你调用的对象是空的”。路径图像是正确的,因为它有一个难看的语法作品“包://应用:,,, /等。”。 –

回答

1

为什么不能为“Name”属性赋值“img”,并从一行代码中尝试此操作?
img.Source =新的BitmapImage(新URI( “包://应用:,,,/Koala.jpg”));

0

优雅的方式是XAML本身。 :-)

....至于后面的代码也可以是太高雅了......

 var img 
      = new Image() 
        { 
         Source = 
          (new ImageSourceConverter()).ConvertFrom(
          "Resources/Images/pic.png") as 
           ImageSource 
        }; 
+2

亲爱的AngelWPF。 XAML是确定的,但代码抛出异常,用的InnerException:{“未将对象引用设置到对象的实例。”} –