C# 将新数据分配给ItemsSource后,数据将从ListView中消失
我有以下C# 将新数据分配给ItemsSource后,数据将从ListView中消失,c#,xaml,listview,windows-phone-8.1,C#,Xaml,Listview,Windows Phone 8.1,我有以下列表视图: <ListView Grid.Row="1" ItemsSource="{Binding MeditationDiary}" > <ListView.ItemTemplate> <DataTemplate> <Grid Width="{Binding ElementName=ListViewHeaders, Path=ActualWidth}" >
列表视图
:
<ListView
Grid.Row="1"
ItemsSource="{Binding MeditationDiary}" >
<ListView.ItemTemplate>
<DataTemplate>
<Grid Width="{Binding ElementName=ListViewHeaders, Path=ActualWidth}" >
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock
Grid.Column="0"
Text="{Binding StartTime}" />
<TextBlock
Grid.Column="1"
Text="{Binding TimeMeditated}" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
列表视图
绑定到此冥想日志
:
private MeditationDiary _meditationDiary;
public MeditationDiary MeditationDiary
{
get
{
RaisePropertyChanged(nameof(MeditationDiary));
return _meditationDiary;
}
set
{
_meditationDiary = value;
RaisePropertyChanged(nameof(MeditationDiary));
}
}
奇怪的是,当我将一个新的冥想日记
对象分配给属性(它包含冥想输入
的数据)时,列表视图不再显示数据
我正在UpdateDiary
方法中分配新的冥想日记
对象,该方法在添加条目后调用:
private async void UpdateDiary()
{
var latestDiary = await _repository.GetAsync();
MeditationDiary = latestDiary;
}
为什么会这样?如何修复?这很可能是破坏绑定的罪魁祸首:
MeditationDiary = latestDiary;
相反,请尝试清除当前集合,然后向其中添加新值:
MeditationDiary.Clear();
foreach (var entry in latestDiary)
MeditationDiary.Add(entry);
添加新项目后,您可能必须调用集合上的RaisePropertyChanged
作为旁注,您可以使用ObservableCollection
替换冥想日记
,当您在其中添加/删除项目时,它会自动通知UI。@grantwiney在添加条目后调用的UpdateDiary
方法中:private async void UpdateDiary(){var latestdaily=wait _repository.GetAsync();冥想日记=latestdaily;}
latestdaily是一个包含条目的对象。感谢您的批准。这很有帮助。我还必须从Grid Width=“{Binding ElementName=ListViewHeaders,Path=ActualWidth}”中删除绑定>
。当我保持该状态时,它会继续显示相同的行为(更新时清空显示)。请参阅。
MeditationDiary.Clear();
foreach (var entry in latestDiary)
MeditationDiary.Add(entry);