Binding Windows phone 8映像未刷新(带绑定的列表框)
主页上的列表框 数据模板 图像绑定 从主页打开设置页 在设置页面Binding Windows phone 8映像未刷新(带绑定的列表框),binding,windows-phone-8,Binding,Windows Phone 8,主页上的列表框 数据模板 图像绑定 从主页打开设置页 在设置页面 更改显示名 添加和删除数据库联系人中的项目 ApplicationData.Current.LocalFolder.Path+“Image”替换为新的图像文件 返回主页 显示名称-刷新 新增项目-新增 已删除项目-已删除 但图像显示为旧的 如果重新启动应用程序-显示新图像 诊断中的 开始主页 刷新() 尺寸:96005时间:11.01.2014 20:38:10 打开设置页面-更改图像-返回主页 刷新() 尺寸:132
- 更改显示名
- 添加和删除数据库联系人中的项目
- ApplicationData.Current.LocalFolder.Path+“Image”替换为新的图像文件
- 显示名称-刷新
- 新增项目-新增
- 已删除项目-已删除
var img=new BitmapImage();
img.CreateOptions=BitmapCreateOptions.IgnoreImageCache;
img.UriSource=新Uri(路径);
您需要实现从DB/DataContext完全加载的INotifyPropertyChangedOn刷新/绑定集合。ListBox读取属性图像并获取新值,但显示旧值。什么时候调用PropertyChanged?在其他页面中更改了“来自图像的文件”属性。在我使用字符串路径创建图像文件之前,是否尝试将ImageSource绑定到包含图像url的字符串,或使用ListBox.ItemsSource属性设置项目源。图像未刷新(需要重新启动应用程序)。文件路径不更改,仅更改文件。这也适用于我从图像源api加载位图。当我从api url(重定向以提供新的真实url)加载“新”图像时,操作系统正在缓存原始图像,因此新图像没有显示,通过设置IgnoreMageCache,新图像显示。谢谢
<StackPanel>
<Image Source="{Binding Image}" Height="160"></Image>
<TextBlock Text="{Binding DisplayName}" />
</StackPanel>
System.Diagnostics.Debug.WriteLine("Refresh()");
ListBox.DataContext = db.Contacts.OrderBy(x => x.Order).ToList();
public ImageSource Image
{
get
{
string path = ApplicationData.Current.LocalFolder.Path + "Image";
if (System.IO.File.Exists(path))
{
System.IO.FileInfo fi = new System.IO.FileInfo(path);
System.Diagnostics.Debug.WriteLine("size: {0} time: {1}", fi.Length, fi.CreationTime);
return new BitmapImage(path);
}
var image = new BitmapImage();
image.SetSource(Application.GetResourceStream(new Uri("Assets/Images/empty.png", UriKind.Relative)).Stream);
return image;
}