如何在库中的代码隐藏中设置图像源?

时间:2014-06-04 16:22:01

标签: c# windows-8 windows-runtime bitmapimage

我有一个用C#编写的用于Windows 8的类库,其中包含一个自定义控件和一个名为Images的文件夹,其中包含一堆图像。在控制模板中我有一个图像

<ControlTemplate TargetType="local:MyCustomControl">
    <Grid Background="Transparent">
        <Image x:Name="MyImage"
               Height="{TemplateBinding Height}"
               Width="{TemplateBinding Width}"
               Stretch="Fill" />
               ...
    </Grid>
</ControlTemplate>

我想在此控件的代码后面设置其中一个图像(在此类库中)作为此图像的源。 我已经尝试过了:

  1. 使用FrameworkElement.BaseUri同时具有图片的“不复制”和“复制始终”属性值的绝对uri:

    this.MyImage.Source = new BitmapImage(new Uri(this.BaseUri, imagePath)); 
    
  2. 具有“不复制”和“复制图像的属性值”的相对uri:

    this.MyImage.Source = new BitmapImage(new Uri(imagePath, UriKind.Relative));
    
  3. ms-resource uri scheme。

  4. 我怎样才能实现它?

1 个答案:

答案 0 :(得分:0)

好的,这很快就升级了。 :)也许,对其他人有用。 解决方案是在路径中使用库的程序集名称:

var assemblyName = this.GetType().GetTypeInfo().Assembly.GetName().Name;
this.MyImage.Source = new BitmapImage(new Uri(this.BaseUri, assemblyName + imagePath));