我正在使用带有ItemRealized事件的LongListSelector控件,它工作得很好,但是当我更新分配给ItemSource of LongListSelector的列表时,LongListSelector中的项没有更新。
下面是我在XAML中使用的代码。
<phone:LongListSelector SelectionChanged="listBoxGroups_SelectionChanged_1" Grid.Row="1" x:Name="longListSelector" ItemTemplate="{StaticResource groupsItemTemplate}" Margin="0,100,0,0">
</phone:LongListSelector>在代码后面。
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服务的响应后,我只需执行以下操作。
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);
}
}
}
}发布于 2013-01-04 22:36:10
我自己找出了解决办法。问题是controller.addNewGroupData();this.ResultList = controller.GetGroupList();
应该在
Deployment.Current.Dispatcher.BeginInvoke(() =>
{});block我-e。
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
controller.AddNewGroupData();
this.ResultList = controller.GetGroupList();
});它现在工作得很好。我研究了很多,但除了微软(twitter例子)之外,任何网站上都没有提到这个区块。
发布于 2013-01-14 07:17:59
为了更新元素,LongListSelector必须在其源代码更新时接收NotificationChange。所以你应该使用ObservableCollection而不是List。
https://stackoverflow.com/questions/14157895
复制相似问题