当 ItemsSource 更新时,我需要刷新 ListView . 我已将 myListView 声明为XAML文件中的 ListView ,并将 myList 指定为C#代码中的itemssource,并带有以下代码段:
ItemsSource
ListView
myListView
myList
myListView.ItemsSource = myList;
现在,我的问题是,如何刷新 myListView ?
刷新是什么意思?如果要刷新UI,则myList必须是ObservableCollection类型,并且您的类必须实现INotifyPropertyChanged接口 .
看看这篇文章
https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged%28v=vs.110%29.aspx
您需要使用和ObservableCollection
public ObservableCollection<string> MyList { get; set; }
将可观察集合设置为ItemsSource后,对集合的每次更改都将自动反映在列表视图中 .
很高兴看到它仅通过使用 System.Collections.ObjectModel.ObservableCollection 起作用,然后在 ListView.ItemsSource 中设置集合 .
System.Collections.ObjectModel.ObservableCollection
ListView.ItemsSource
试试这个
if (ListView.Items.Count > 0) { ListView.ItemsSource = null; } listItem.Clear();
仅分配新的列表视图对象不会清除数据 . 您需要清除ItemSource并清除用于绑定列表视图的列表数组
我创建了一个测试应用程序 - krayknot来测试这个场景,这里是代码:
包括INotifyPropertyChanged
public sealed partial class PivotPage : Page, INotifyPropertyChanged
创建eventhandler
public event PropertyChangedEventHandler PropertyChanged;
创建ObservableCollection
ObservableCollection<Feeds> oc = new ObservableCollection<Feeds>();
这是方法,
private async void BindFeeds(string URL) { progressRing.IsActive = true; var uri = new Uri(URL); var httpClient = new HttpClient(); // Always catch network exceptions for async methods httpClient.DefaultRequestHeaders.Add("Cache-Control", "no-cache"); var result = await httpClient.GetAsync(uri); var xmlStream = await result.Content.ReadAsStreamAsync(); XDocument loadedData = XDocument.Load(xmlStream); foreach (var data in loadedData.Descendants("Table")) { try { oc.Add(new Feeds { BlogId = data.Element("Blogs_CID").Value.ToString(), Description = data.Element("Blogs_BriefDescription").Value.ToString(), IconImage = videoIcon, Heading = data.Element("Blogs_Heading").Value.ToString().Trim(), MainImage = feedImageThumbnail, //data.Element("Blogs_SquareImagePath").Value.ToString(), TimeStamp = data.Element("TimeElapsed").Value.ToString(), SourceURL = data.Element("Blogs_SourceURL").Value.ToString() }); } catch (Exception) { //throw; } } httpClient.Dispose(); if (lstLatest.Items.Count == 0) { lstLatest.ItemsSource = oc; } else { NotifyPropertyChanged(); } httpClient.Dispose(); progressRing.IsActive = false; }
5 回答
刷新是什么意思?如果要刷新UI,则myList必须是ObservableCollection类型,并且您的类必须实现INotifyPropertyChanged接口 .
看看这篇文章
https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged%28v=vs.110%29.aspx
您需要使用和ObservableCollection
将可观察集合设置为ItemsSource后,对集合的每次更改都将自动反映在列表视图中 .
很高兴看到它仅通过使用
System.Collections.ObjectModel.ObservableCollection
起作用,然后在ListView.ItemsSource
中设置集合 .试试这个
仅分配新的列表视图对象不会清除数据 . 您需要清除ItemSource并清除用于绑定列表视图的列表数组
我创建了一个测试应用程序 - krayknot来测试这个场景,这里是代码:
包括INotifyPropertyChanged
创建eventhandler
创建ObservableCollection
这是方法,