我已经使用Image Control下载了image,class和listview 这是我绑定到listview的类:
class MagazineDownload
{
public string Title { get; set; }
public string Date { get; set; }
public BitmapImage Cover { get; set; }
public string Pdf { get; set; }
public MagazineDownload(string title, string image, string date, string pdf)
{
Title = title;
Cover = new BitmapImage();
addImage(image);
Date = date;
Pdf = pdf;
}
private async void addImage(string image)
{
StorageFile storageFile = await ApplicationData.Current.LocalFolder.GetFileAsync(image);
IAsyncOperation<IRandomAccessStream> operation = storageFile.OpenAsync(FileAccessMode.Read);
IRandomAccessStream stream = await operation;
Cover.SetSource(stream);
}
}
这是图像绑定的代码:
<ListView
Margin="19,-23,-19.167,23.333"
AutomationProperties.AutomationId="PivotListViewSection"
SelectionMode="None"
IsItemClickEnabled="False"
ItemClick="downList_ItemClick"
ItemsSource="{Binding}"
x:Uid="downList"
x:Name="downList"
>
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image x:Name="imageDownCover" Height="100" Width="100" Stretch="Fill" Source="{Binding Cover}"/>
除图像外,所有内容(标题,日期,pdf按钮标记)都有效。
如何解决?
答案 0 :(得分:0)
避免从构造函数中调用任何异步方法。它将被设置,但它需要通过INotifyPropertyChanged通知UI。
由于图像是本地文件,您可以使用本地文件夹uri,只需在构造函数中设置uri。
public MagazineDownload(string title, string image, string date, string pdf)
{
//don't forget the triple forward slashes
var uri = string.Format("ms-appdata:///local/{0}", image);
Title = title;
Cover = new BitmapImage(new Uri(uri));
Date = date;
Pdf = pdf;
}
我建议设置INotifyPropertyChanged,因为您的所有属性都是公共获取和设置的,如果这些值中的任何一个发生更改,您将希望更新UI。如果它们不应该改变,那么让它们有一个私有的只读后备变量,这样就没有什么可以改变它们。