显示图像时出现问题
本文关键字:问题 显示图 图像 显示 | 更新日期: 2023-09-27 18:21:51
好吧,这是我的问题:
- 我有一个自定义类,有一个项目列表,每个项目都有一个与之相关的图像路径
- 我在项目中添加了一个包含图像的文件夹(所以我想XAP中也添加了图像,是吗?)
- 当我试图在XAML中绑定图像项的Source时,它不起作用
<ListBox Margin="0,0,-12,0" ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="0,0,0,17">
<Image Height="100" Width="100" Margin="12,0,9,0" Source="/AlbumArt/{Binding AlbumArt}"/>
<StackPanel Width="311">
<TextBlock Text="{Binding Title}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}"/>
<TextBlock Text="{Binding Author}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我做错了什么?有什么想法吗?
p.S.
我也尝试过
Source="{Binding AlbumArt}"
,但它仍然没有显示任何内容。最疯狂的是,如果我将Source设置为特定的图像(例如
/AlbumArt/someImage.jpg
),那么该图像在VisualStudio&Emulator。
我不认为绑定是这样工作的。如果不可能在图像路径属性(即AlbumArt
)前加上字符串"/AlbumArt/"
,我建议使用转换器
此外,只有当目标属性是字符串时,格式化字符串才有效,因此StringFormat已禁用。如果我对StringFormat 有错误,请有人纠正我
如果您有绑定问题,请始终查看输出窗口以获取详细信息。这就是显示绑定错误信息的地方。
此Source="/AlbumArt/{Binding AlbumArt}"
将不起作用,因为它将被视为一个字符串。
如果没有看到你的类,很难确定,但你绑定到的属性("AlbumArt")应该是Uri
,而不是string
,并且应该用与图像相对的Uri填充。该图像还应设置为具有Content的构建操作。
您所要做的就是。。
<Image Height="100" Width="100" Margin="12,0,9,0" Source="{Binding ImagePath}"/>
正如你所说的,你有一个项目列表(我认为这将是一个也有图像路径的类),所以把这个属性放在这个类中,对于每个项目,把对应项目的路径放在这个属性中。
private string _ImagePath;
public string ImagePath
{
get
{
return _ImagePath;
}
set
{
_imagePath = value;
}
}
如果在项类中实现INotifyPropertyChanged,效果会更好。
让自己变得更诚实怎么样。
private string _AlbumArt;
public string AlbumArt
{
get
{
return _AlbumArt;
}
set
{
if(_AlbumArt!=null)
_AlbumArt=@"/AlbumArt/"+ value;
}
}
和绑定
<Image Height="100" Width="100" Margin="12,0,9,0" Source="{Binding AlbumArt}"/>
我敢肯定你刚才用错了路径,试试这个。。。。
"/ApplicationName;component/AlbumArt/{Binding AlbumArt}"
当然,将ApplicationName部分替换为您的应用程序名称。确保用%20
替换其中的空格