Xamarin Forms ListView - исключение? - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть очень простой ListView, который был запрограммирован для отображения списка, который имеет три свойства. Всякий раз, когда я пытаюсь связать коллекцию с этим списком, я получаю исключение InvalidCast. Я не знаю, что в этом плохого!

Ниже мой XAML

<ContentPage.Content>
    <StackLayout>
        <ListView x:Name="listAttendanceTiming" HasUnevenRows="True">
            <ListView.HeaderTemplate>
                <DataTemplate>
                    <ViewCell>
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto" />
                            </Grid.RowDefinitions>

                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>

                            <Label Text="From Time" HorizontalTextAlignment="Start" FontSize="14"
                                   Grid.Row="0" Grid.Column="0" />

                            <Label Text="To Time" HorizontalTextAlignment="Start" FontSize="14"
                                   Grid.Row="0" Grid.Column="1" />

                            <Label Text="Remarks" HorizontalTextAlignment="Start" FontSize="14"
                                   Grid.Row="0" Grid.Column="2" />

                        </Grid>
                    </ViewCell>
                </DataTemplate>
            </ListView.HeaderTemplate>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>

                            <Label Text="{Binding FromTimeString}" HorizontalTextAlignment="Start" FontSize="14" Grid.Column="0" />
                            <Label Text="{Binding ToTimeString}" HorizontalTextAlignment="Start" FontSize="14" Grid.Column="1" />
                            <Label Text="{Binding Remarks}" HorizontalTextAlignment="Start" FontSize="14" Grid.Column="2" />

                        </Grid>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackLayout>
</ContentPage.Content>

А вот и мой C #

var timings = new List<Timing>();

var timing = new Timing();
timing.Id = 1;
timing.FromTime = DateTime.Now;
timing.FromTimeString = DateTime.Now.ToString("hh:mm ttBel");
timing.ToTime = DateTime.Now;
timing.ToTimeString = DateTime.Now.ToString("hh:mm tt");
timing.Code = "I";
timing.Remarks = "Inside";
timings.Add(timing);
listAttendanceTiming.ItemsSource = timings;

public class Timing
{
    public int Id { get; set; }
    public DateTime FromTime { get; set; }
    public string FromTimeString { get; set; }
    public DateTime ToTime { get; set; }
    public string ToTimeString { get; set; }
    public string Code { get; set; }
    public string Remarks { get; set; }
}

Исключение

Необработанное исключение:

System.ArgumentException: значение было недопустимым значением для HeaderTemplate Имя параметра: значение произошло

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

ListView.HeaderTemplate.DataTemplate не требует ViewCell свойства.Изменение ListView.HeaderTemplate, как показано ниже, решит эту проблему.

<ListView.HeaderTemplate>
    <DataTemplate>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>

            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>

            <Label Text="From Time" HorizontalTextAlignment="Start" FontSize="14"
                   Grid.Row="0" Grid.Column="0" />

            <Label Text="To Time" HorizontalTextAlignment="Start" FontSize="14"
                   Grid.Row="0" Grid.Column="1" />

            <Label Text="Remarks" HorizontalTextAlignment="Start" FontSize="14"
                   Grid.Row="0" Grid.Column="2" />

        </Grid>
    </DataTemplate>
</ListView.HeaderTemplate>
1 голос
/ 25 апреля 2019

Я думаю, что вы пропали без вести

<DataTemplate>
    <Grid>

после <ListView.HeaderTemplate>

Пожалуйста, опубликуйте полное исключение в следующий раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...