积极答复者
关于数据绑定的延迟

问题
-
用LongListSelector,做了一个数据绑定应用,但是当数据源发生更改时,需要重新载入页面才可以实现数据更新。
尝试使用了UpdateLayout(); 和InvalidateArrange();都不行。
只有使用NavigationService.Navigate(new Uri("/Passage.xaml" +"?Refresh=" + Guid.NewGuid(), UriKind.Relative)); 成功了
但是,遗憾的是Passage页面是一个Pivot页面而我要更新的页面不是第一个PivotItem……
这个要更新的页面是一个评论页面,当按下评论按钮时会弹出一个Canvas,评论完成后Canvas消失大概就是这么个情况!这个时候数据源就已经更新了,但与数据源绑定的控件并没有更新!
请问如何实现刷新页面?
万分感谢!
- 已编辑 孟云帆 2014年7月20日 13:02
全部回复
-
测试了这两种方法,先说第二种,失败了,代码如下
var comment = new List<Comment>(viewModelCommentList.Comments);
CommentLongListSelector.ItemsSource = new ObservableCollection<Comment>(comment);
再说第一种
修改完成了,但是直接运行时莫名其妙崩溃。
看来我需要再解释一下我绑定的东西是个什么情况
首先LongListSelector绑定的ItemTemplate是一个评论框,代码如下
<DataTemplate x:Key="CommentMessage"> <Grid Margin="0,0,12,12"> <Grid.Background> <SolidColorBrush Color="White" Opacity="0.15"/> </Grid.Background> <StackPanel> <TextBlock Text="{Binding CommentContent}" FontSize="20" Margin="12,12,12,0" TextWrapping="Wrap" TextAlignment="Left"/> <Grid Height="50"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <HyperlinkButton Content="{Binding CommentorName}" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="12" Grid.Column="0" Foreground="Azure" /> <TextBlock Text="{Binding CommentTime}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="12" Grid.Column="1" /> </Grid> </StackPanel> </Grid> </DataTemplate>
LongListSelector的ItemSource绑定的是Comments
昨天刚开始的时候,我每次添加一条评论时,立刻就会多出一个评论框,但遗憾是的内容和之前的默认的那个一样。当时我想,这应该不是LongListSelector的问题……后来不知道修改了什么,就算评论了也不会立刻多出一个评论框……
这个问题好郁闷…… 亲啊!肿么办?