【问题标题】:Xamarin Forms ListView - Exception?Xamarin Forms ListView - 异常?
【发布时间】:2019-09-15 00:22:00
【问题描述】:

我有一个非常简单的 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 的无效值 参数名称:发生值

【问题讨论】:

  • 我不认为 ViewCell 在标题中是必需的
  • 正确。这就是这个例外的原因。我犯了一个愚蠢的错误。

标签: listview xamarin exception xamarin.forms


【解决方案1】:

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>

【讨论】:

  • 请不要忘记在两天后标记这个答案,它会帮助其他有smilar问题的人,谢谢。
【解决方案2】:

我觉得你不见了

<DataTemplate>
    <Grid>

&lt;ListView.HeaderTemplate&gt;之后

请下次发布完整的例外情况。

【讨论】:

  • 谢谢,我已经更新了 XAML 和抛出的异常。
猜你喜欢
  • 2021-11-14
  • 2017-01-05
  • 1970-01-01
  • 2020-04-09
  • 1970-01-01
  • 2016-11-13
  • 2019-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多