如何将AlbumArt绑定到我的列表框?
我的代码:
<ListBox Name="albumLb" Margin="0,0,-12,0" ItemsSource="{Binding Items}" SelectionChanged="albumLb_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="0,0,0,17" >
<!--Replace rectangle with image-->
<Image Source="{Binding }"/>
<StackPanel Width="311">
<TextBlock Text="{Binding Name}" FontSize="28" />
<TextBlock Text="{Binding Artist}" Margin="12,-6,12,0" Foreground="#FFE5CDCD"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>在我的代码中,我使用了:
albumLb.ItemsSource = library.Albums;我知道我可以通过library.Albumsint index.getAlbumArt()获得AlbumArt,但是我不知道如何将它绑定到我的列表框中。
发布于 2011-09-13 11:12:49
getAlbumArt()返回什么类型?如果它只是一个文件的路径(比方说在独立存储中),那么你就必须编写一个转换器来进行绑定。此外,不使用名为getAlbumArt()的函数,而是创建一个名为AlbumArt的property,并使用一个公共getter,这将允许绑定到它。然后,可以使用以下命令绑定图像
<Image Source="{Binding AlbumArt}" />接下来,创建一个转换器(通过实现IValueConverter接口),它将采用独立存储中文件的路径,并将其加载到BitmapImage中,然后由转换器返回给ListBox中的Image。
This question有关于如何做到这一点的详细信息。
另一方面,如果您需要从某个网站下载图像,请使用WebClient.OpenReadAsync。
WebClient wc = new WebClient();
wc.OpenReadCompleted += new OpenReadCompletedEventHandler(OnImageDownloadCompleted);
wc.OpenReadAsync(new Uri("www.mywebsite.com/albumart/album1.jpg", UriKind.Relative));
void OnImageDownloadCompleted(object sender, OpenReadCompletedEventArgs e)
{
if (e.Error == null) {
StreamResourceInfo sri = new StreamResourceInfo(e.Result as Stream, null);
BitmapImage imgsrc = new BitmapImage();
imgsrc.SetSource(sri.Stream);
}
}https://stackoverflow.com/questions/7396311
复制相似问题