WPF中资源加载的编程方式

时间:2011-10-12 11:11:26

标签: wpf resources

在XAML中加载图像非常容易:

<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)。

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

2 个答案:

答案 0 :(得分:1)

为什么你不能为“Name”属性赋值“img”并从一行代码中尝试这个?     
    img.Source = new BitmapImage(new Uri(“pack:// application:,,, / Koala.jpg”));

答案 1 :(得分:0)

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

....至于背后的代码也可以很优雅......

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