首页 文章

使用C#和XAML更新或刷新Windows Phone 8.1应用程序中的Listview

提问于
浏览
3

ItemsSource 更新时,我需要刷新 ListView . 我已将 myListView 声明为XAML文件中的 ListView ,并将 myList 指定为C#代码中的itemssource,并带有以下代码段:

myListView.ItemsSource = myList;

现在,我的问题是,如何刷新 myListView

5 回答

  • 3

    刷新是什么意思?如果要刷新UI,则myList必须是ObservableCollection类型,并且您的类必须实现INotifyPropertyChanged接口 .

    看看这篇文章

    https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged%28v=vs.110%29.aspx

  • 0

    您需要使用和ObservableCollection

    public ObservableCollection<string> MyList { get; set; }
    

    将可观察集合设置为ItemsSource后,对集合的每次更改都将自动反映在列表视图中 .

  • 0

    很高兴看到它仅通过使用 System.Collections.ObjectModel.ObservableCollection 起作用,然后在 ListView.ItemsSource 中设置集合 .

  • 2

    试试这个

    if (ListView.Items.Count > 0)
      {
         ListView.ItemsSource = null;
      }
      listItem.Clear();
    

    仅分配新的列表视图对象不会清除数据 . 您需要清除ItemSource并清除用于绑定列表视图的列表数组

  • 0

    我创建了一个测试应用程序 - 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;
            }
    

相关问题