首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >longlistselector中的自动更新

longlistselector中的自动更新
EN

Stack Overflow用户
提问于 2013-01-04 21:14:28
回答 2查看 1K关注 0票数 0

我正在使用带有ItemRealized事件的LongListSelector控件,它工作得很好,但是当我更新分配给ItemSource of LongListSelector的列表时,LongListSelector中的项没有更新。

下面是我在XAML中使用的代码。

代码语言:javascript
复制
<phone:LongListSelector SelectionChanged="listBoxGroups_SelectionChanged_1" Grid.Row="1" x:Name="longListSelector" ItemTemplate="{StaticResource groupsItemTemplate}" Margin="0,100,0,0">
</phone:LongListSelector>

在代码后面。

代码语言:javascript
复制
 public GroupsMainPage()
 {
        InitializeComponent();
        longListSelector.ItemRealized += longListSelector_ItemRealized;
        this.Loaded += GroupsMainPage_Loaded; 
 }


void longListSelector_ItemRealized(object sender, ItemRealizationEventArgs e)

    {
        if (!controller.IsLoading && longListSelector.ItemsSource != null && longListSelector.ItemsSource.Count >= 100)
        {
            if (e.ItemKind == LongListSelectorItemKind.Item)
            {
                if ((e.Container.Content as Result).Equals(longListSelector.ItemsSource[longListSelector.ItemsSource.Count -7]))
                {
                    connectToWebService();

                }
            }
        }
    }

在收到来自web服务的响应后,我只需执行以下操作。

代码语言:javascript
复制
private void WebServiceSuccessAction(Object obj)
{
    GroupModel.getInstance().GetGroupResponse((GroupResponse)obj);
    if (GroupModel.getInstance().GetGroupResponse().Response.errorCode == 0)
    {
         controller = new GroupController();
         if (fetchNumberofGroups <= 100)
         {
              this.ResultList = controller.GetGroupList();
              longListSelector.ItemsSource = this.ResultList;

         }
         else
         {
              controller.addNewGroupData();
              this.ResultList = controller.GetGroupList();

         }
    }
    else
    {
         List<Error> error = ConfigModel.getInstance().getConfigResponse().Response.data.errors;
         foreach (Error err in error)
         {
             if (err.code == GroupModel.getInstance().GetGroupResponse().Response.errorCode)
             {
                MessageBox.Show(err.text);
             }
         }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-04 22:36:10

我自己找出了解决办法。问题是controller.addNewGroupData();this.ResultList = controller.GetGroupList();

应该在

代码语言:javascript
复制
Deployment.Current.Dispatcher.BeginInvoke(() =>
                    {});block

我-e。

代码语言:javascript
复制
Deployment.Current.Dispatcher.BeginInvoke(() =>
                    {
                        controller.AddNewGroupData();
                        this.ResultList = controller.GetGroupList();
                    });

它现在工作得很好。我研究了很多,但除了微软(twitter例子)之外,任何网站上都没有提到这个区块。

票数 3
EN

Stack Overflow用户

发布于 2013-01-14 07:17:59

为了更新元素,LongListSelector必须在其源代码更新时接收NotificationChange。所以你应该使用ObservableCollection而不是List。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14157895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档