【发布时间】:2015-10-14 22:15:58
【问题描述】:
我有以下ListView:
<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>
这绑定到 MeditationDiary 类型的 MeditationDiary 属性,该属性由 MeditationEntries 组成:
public class MeditationDiary : Collection<MeditationEntry> { }
public class MeditationEntry
{
public DateTime StartTime { get; set; }
public TimeSpan TimeMeditated { get; set; }
}
ListView 绑定到这个MeditationDiary:
private MeditationDiary _meditationDiary;
public MeditationDiary MeditationDiary
{
get
{
RaisePropertyChanged(nameof(MeditationDiary));
return _meditationDiary;
}
set
{
_meditationDiary = value;
RaisePropertyChanged(nameof(MeditationDiary));
}
}
奇怪的是,当我将新的 MeditationDiary 对象分配给属性(其中包含带有 MeditationEntries 的数据)时,ListView 不再显示数据。
我在添加条目后调用的UpdateDiary 方法中分配新的MeditationDiary 对象:
private async void UpdateDiary()
{
var latestDiary = await _repository.GetAsync();
MeditationDiary = latestDiary;
}
为什么会这样?如何解决?
【问题讨论】:
-
@GrantWinney 在添加条目后调用的
UpdateDiary方法中:private async void UpdateDiary() { var latestDiary = await _repository.GetAsync(); MeditationDiary = latestDiary; }latestDiary 是一个包含条目的对象。
标签: c# xaml listview windows-phone-8.1