我有一個ObservableCollection
,這是實現INotifyPropertyChanged
接口視圖模型的集合...LongListSelector必然的ObservableCollection不更新
public class FeedsViewModel : ObservableCollection<FeedViewModel>
{
}
(我還沒有爲FeedViewModel
的代碼,但它是相當標準INotifyPropertyChanged
並且在獨立測試時結合)。
我使用的FeedsViewModel
實例作爲一個LongListSelector
控制的ItemsSource
...
<UserControl.Resources>
<viewModel:FeedStatusFeedbackConverter x:Key="ProgressStatusColorConverter"/>
<viewModel:FeedStatusFeedbackConverter x:Key="TitleStatusColorConverter"/>
<viewModel:FeedsViewModel x:Key="FeedsViewModel"/>
</UserControl.Resources>
<phone:LongListSelector ItemsSource="{Binding Source={StaticResource FeedsViewModel}}">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<Grid x:Name="LayoutRoot"
Background="{StaticResource PhoneChromeBrush}"
DataContext="{TemplateBinding}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding Path=Name}"
Grid.Row="0"
Style="{StaticResource PhoneTextLargeStyle}"
Foreground="{Binding Path=Status, Converter={StaticResource TitleStatusColorConverter}}"/>
<TextBlock Text="{Binding Path=Uri}"
Grid.Row="1"
Style="{StaticResource PhoneTextNormalStyle}"
TextTrimming="WordEllipsis" />
<ProgressBar Grid.Row="2"
Maximum="{Binding Path=ItemCount}"
Value="{Binding Path=ItemProgress}"
Foreground="{Binding Path=Status, Converter={StaticResource ProgressStatusColorConverter}}">
</ProgressBar>
</Grid>
<Grid Grid.Column="1">
<Image Name="Delete"
Source="/Assets/Buttons/delete.png"
Width="48"
Height="48"
Margin="5"
MouseLeftButtonDown="Press"
MouseLeftButtonUp="Release"/>
</Grid>
</Grid>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
然而,當我在運行時添加一些東西到的ObservableCollection的UI不會更新與變化...
private void AddFeedClick(object sender, EventArgs e)
{
var task = FeedModel.Load("Reddit");
var awaiter = task.GetAwaiter();
awaiter.OnCompleted(() =>
{
var model = awaiter.GetResult();
FeedModel.Save(model);
((ObservableCollection<FeedViewModel>)Resources["FeedsViewModel"]).Add(new FeedViewModel(model));
});
}
當新的視圖模型被添加到ObservableCollection
並檢查收集表明,集合事件的CollectionChanged
有把柄觸及斷點rs(爲空)。
我怎樣才能讓LongListSelector從ObservableCollection自身更新?
嘗試同步添加項目,沒有效果。嘗試從代碼設置項目源,沒有效果。在同一時間嘗試,沒有影響。 –
需要查看您的類FeedsViewModel。你重寫它PropertyChanged事件?你不應該。 –
FeedsViewModel發佈在問題的頂部。我不重寫PropertyChanged事件。 –