出于某种原因,我每次尝试绑定到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,但这也不起作用。
答案 0 :(得分:2)
只需使用Image和TextBlock元素:
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Icon}"/>
<TextBlock Text="{Binding Name}"/>
</StackPanel>
其中Icon
属性的类型为ImageSource
,Uri
或string
。
示例:
public ImageSource Icon
{
get
{
if (isFolder)
{
return new BitmapImage(new Uri(
"pack://application:,,,/ComputerProject;component/Resources/FolderIcon.jpg"));
}
return null; //TODO
}
}