将Observable集合绑定到ListView

时间:2018-03-04 13:13:21

标签: listview xamarin observablecollection

使用Xamarin和Visual Studio 2017,我在调试时收到一条抽象的The application is in break mode消息。

使用try-catch时,没有任何内容被捕获。

我已经调试过返回的TimeLog集合不为空。 from& toDateTime值给出。

TimeLogs是ItemsSourceListView应用的可观察收藏。

private ObservableCollection<ExtendedTimeLog> TimeLogs;

在文件背后的代码中:

TimeLogs = new ObservableCollection<ExtendedTimeLog>();
TimeLogView.ItemsSource = TimeLogs;

拥有非空日志集合后,进程崩溃。

private async Task RefreshTimeLogs(long from, long to)
{
         TimeLogs.Clear();
         var logs = await DB.GetExtendedTimeLogs(from, to);

         foreach (var element in logs)
             TimeLogs.Add(element);
}

刷新方法由datepicker {To,From} _DateSelected方法调用。

  <DatePicker x:Name="datepickerFrom" Grid.Row="0" DateSelected="datepickerFrom_DateSelected"></DatePicker>

XAML:

<ListView  x:Name="TimeLogView" Grid.Row="2">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                                <StackLayout Orientation="Horizontal">

                                    <TextCell Text="{Binding From}" />
                                    <TextCell Text="{Binding To}"   />
                                    <TextCell Text="{Binding Note}" />

                                </StackLayout>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

当拥有一个空集合(在for循环中)并且未更改observable集合时,不会发生应用程序崩溃。

必须修改什么?

1 个答案:

答案 0 :(得分:0)

对我来说,这很好。 3个TextCell条目由Label替换。