Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将新数据分配给ItemsSource后,数据将从ListView中消失_C#_Xaml_Listview_Windows Phone 8.1 - Fatal编程技术网

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);