C#WPF从Resources加载图像

时间:2017-10-04 14:07:33

标签: c# wpf xaml

出于某种原因,我每次尝试绑定到Image时都会获取程序集名称。我在TextBlock中获取System.Windows.Control.Image而不是图像本身。

我的XAML看起来像这样

<TextBlock FontSize="16">
     <TextBlock.Text>
        <MultiBinding StringFormat=" {0} {1}">
           <Binding Path="Icon"></Binding>
           <Binding Path="Name"></Binding>
          </MultiBinding>
      </TextBlock.Text>
</TextBlock> 

在我的Model类中,我正在创建一个像这样的图像:

public Image Icon
{
   get
   {
       if (isFolder)
       {
           Image folderImage = new Image();
           BitmapImage logo = new BitmapImage();
           logo.BeginInit();
           logo.UriSource = new Uri("pack://application:,,,/ComputerProject;component/Resources/FolderIcon.jpg");
           logo.EndInit();
           folderImage.Source = logo;
           return folderImage;
       }
       else
       {
            return new Image(); //TODO
       }
   }
}

可以在TextBlock中完成吗?我尝试过使用多个文本块而不是使用StringFormatting,但这也不起作用。

1 个答案:

答案 0 :(得分:2)

只需使用Image和TextBlock元素:

<StackPanel Orientation="Horizontal">
    <Image Source="{Binding Icon}"/>
    <TextBlock Text="{Binding Name}"/>
</StackPanel>

其中Icon属性的类型为ImageSourceUristring

示例:

public ImageSource Icon
{
    get
    {
        if (isFolder)
        {
            return new BitmapImage(new Uri(
                "pack://application:,,,/ComputerProject;component/Resources/FolderIcon.jpg"));
        }

        return null; //TODO
    }
}