На MainPage ListBoxWindows Phone 8 Изображение не обновляют (ListBox с Binding)
DataTemplate
<StackPanel>
<Image Source="{Binding Image}" Height="160"></Image>
<TextBlock Text="{Binding DisplayName}" />
</StackPanel>
Binding
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;
}
От MainPage open SettingPage.
В SettingPage
изменение отображаемое_имя
добавлять и удалять элементы из db.Contacts
ApplicationData.Current.LocalFolder.Path + "Image" заменен новый файл изображения;
Вернуться на главную
отображаемое_имя - обновить новые элементы
- добавил
удаленные элементы - удалены
но изображение показать OLD
Если перезапуск приложения - показать новый образ
В диагностическом
Start MainPage
Refresh()
Размер: 96005 время: 11.01.2014 20:38:10
Open SettingPage - Изменение изображения - Вернуться на главную
Refresh()
Размер: 132404 время: 11.01.2014 21:05:00
Я вижу изображение имеет новый размер, но в окне списка старого изображения.
Почему изображение не обновляется?
Вы должны реализовать INotifyPropertyChanged –
На Refresh/Bind полной коллекции загружаются из БД/DataContext. ListBox читает свойство Image и получает новое значение, но показывает старое. Когда вызывается PropertyChanged? Файл из свойства изображения изменен в athother Page –
Вы пытались вместо привязки ImageSource к строке, содержащей URL-адрес изображения, или с помощью свойства ListBox.ItemsSource для установки источника элементов? –