Элементы представления коллекции не могут быть привязаны к типу FileInfo. [Xamarin Forms] - PullRequest
0 голосов
/ 16 февраля 2020

Я пытаюсь связать представление моей коллекции со списком FileInfo

Например:

List<FileInfo> files = FileHelper.GetFiles();
collectionViewList.ItemsSource = files;

Но у меня есть ошибка: "Указанное приведение недействительно"

Если я пытаюсь сделать это в простом представлении списка, это работает.

Может быть, представление коллекции не принимает некоторые типы объектов?

Код Используется при повышении исключения:

 private async void StartProcessButton(object sender, EventArgs e)
    {

        if (MyListView.SelectedItem == null)
        {
            return;
        }

        switch (this.selectedItemId)
        {
            case 0:
                await Navigation.PushAsync(new ConcatePdfPage(fileInfo));
                break;
            default:
                break;
        }

    }

Я попытался отладить и когда мое приложение загружается моя страница конкатена, исключение поднимается в этой строке кода:

await Navigation.PushAsync(new ConcatePdfPage(fileInfo));

Мой класс конструктора:

public ConcatePdfPage(FileInfo fileInfo)
        {
            InitializeComponent();
            this.fileInfo1 = fileInfo;

            IPdfPickerAndroid pdfPickerAndroid = DependencyService.Get<IPdfPickerAndroid>();

            FilesList.ItemsSource = pdfPickerAndroid.GetPdfFilesInDocuments();
        }

Чтобы быть более точным, ошибки возникают, когда загружается мое представление коллекции, привязка к * списку FileInfo *

https://docs.microsoft.com/fr-fr/dotnet/api/system.io.fileinfo?view=netframework-4.8

Но я попытался связать свой вид коллекции со списком строк.

И это работает, исключение не повышается.

Я также пытался привязать свой список FileInfo к представлению списка вместо представления коллекции, и исключение не было поднято.

1 Ответ

0 голосов
/ 16 февраля 2020

Проблема решена:

Я удалил атрибуты viewcell в своем коде xaml на странице, где поднято исключение.

<CollectionView x:Name="FilesList" SelectionMode="Single">
        <CollectionView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout Orientation="Horizontal">
                        <StackLayout Orientation="Vertical">
                            <Label Text="{Binding Name}"/>
                            <Label Text="{Binding CreationTime.Date, StringFormat='{}{0:dd/MM/yyyy}'}"/>
                        </StackLayout>
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </CollectionView.ItemTemplate>
    </CollectionView>

Новый код:

<CollectionView x:Name="FilesList" SelectionMode="Single">
        <CollectionView.ItemTemplate>
            <DataTemplate>
                <StackLayout Orientation="Horizontal">
                        <StackLayout Orientation="Vertical">
                            <Label Text="{Binding Name}"/>
                            <Label Text="{Binding CreationTime.Date, StringFormat='{}{0:dd/MM/yyyy}'}"/>
                        </StackLayout>
                </StackLayout>
            </DataTemplate>
        </CollectionView.ItemTemplate>
    </CollectionView>

https://medium.com/a-developer-in-making/how-to-work-with-collectionview-in-xamarin-forms-5dc65c50b419

...