使用转换器处理ItemSource并返回新列表

时间:2019-04-29 16:00:37

标签: c# xamarin.forms

我有一个像这样的转换器列表

   <ListView ItemsSource="{Binding Availability, Converter={StaticResource AvailabilityConverter}}">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ContentView>
                            <ContentView.Content>
                                <StackLayout>
                                    <Label Text="{Binding DateTime.TimeOfDay}" />                                  
                                </StackLayout>
                            </ContentView.Content>
                        </ContentView>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

这里是转换器

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is IEnumerable<Availability>)
        {
            var availability = (List<Availability>)value;

            foreach (var day in availability)
            {
                //Manipulate the list in here
            }

            return availability;
        }

        return value;
    }

可用性是DateTimes的列表

我希望能够在转换器中编写一些业务逻辑,以便在返回列表之前在此处处理列表,但是执行该列表时会遇到System.InvalidCastException。

1 个答案:

答案 0 :(得分:0)

我认为该异常来自格式错误的xaml。 您正在使用自定义单元格,它必须从ViewCell派生。

您的xaml必须看起来像这样:

<ListView ItemsSource="{Binding Availability, Converter={StaticResource AvailabilityConverter}}">
  <ListView.ItemTemplate>
     <DataTemplate>
        <ViewCell>
            <ContentView>
                <ContentView.Content>
                    <StackLayout>
                        <Label Text="{Binding DateTime.TimeOfDay}" />                                  
                    </StackLayout>
                </ContentView.Content>
            </ContentView>
        </ViewCell>
    </DataTemplate>
</ListView.ItemTemplate>