无法刷新WP8数据绑定中的longlistselector

时间:2014-06-18 04:15:42

标签: c# wpf windows-phone-8 data-binding mvvm

我在使用数据绑定到LongListSelector时遇到了一些麻烦。当我最初运行此方法时,它的工作原理。数据绑定,一切都很好。

问题是当我按下刷新按钮时,我的应用程序会获取一个新的JSON提要,解析它并尝试绑定它。我的应用程序似乎下载了JSON和东西,但没有刷新UI。我哪里出错?

我已尝试BoardLongList.ItemsSource = null;BoardLongList.ItemsSource.Clear();无效。

有什么想法吗? JObject来自newtonsoft.json,RootObject来自ViewModels.RootObject。

提前致谢!

private void Bind(JObject rootObject)
{
    string rootObjectString = rootObject.ToString();                   
    RootObject obj = JsonConvert.DeserializeObject<RootObject>(rootObjectString);

    // Bind to LongListSelector
    BoardLongList.ItemsSource = obj.Movements;
}

我的XAML:

<phone:LongListSelector Grid.Row="1" x:Name="BoardLongList" Margin="0,0,-12,1" ItemsSource="{Binding Movement}">
    <phone:LongListSelector.ItemTemplate >
        <DataTemplate>
            <StackPanel Orientation="Horizontal" Margin="2" Height="50">
                <Grid>
                    <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="80" />
                         <ColumnDefinition Width="200" />
                         <ColumnDefinition Width="100" />
                         <ColumnDefinition Width="120" />
                     </Grid.ColumnDefinitions>
                     <TextBlock Grid.Column="0"  Text="{Binding A1}" />
                     <TextBlock Grid.Column="1"  Text="{Binding A2}" />
                     <TextBlock Grid.Column="2"  Text="{Binding A3}" />
                     <TextBlock Grid.Column="3"  Text="{Binding A4}" />
                 </Grid>
             </StackPanel>
         </DataTemplate>
     </phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>

3 个答案:

答案 0 :(得分:1)

您的ItemsSource是否为ObservableCollection?。ObservableCollection是一个集合,其中包含通知,当集合中的某些内容发生更改时,它会通知用户界面。

使obj.Movements成为 ObservableCollection

答案 1 :(得分:0)

您是否尝试过拉动刷新功能?

检查this

您可以使用ItemRealized事件并使用ListHeader(或ListFooter从底部拉出来)来完成此操作。在ItemRealized事件中,您检查该项是否是您的标题对象。如果它然后加载更多项目。

希望它有所帮助。

答案 2 :(得分:0)

我终于明白了。这是因为C#web缓存了我的请求。不是因为我的数据绑定!

相关问题