Xamarin формы: System.InvalidCastException: «Указанное приведение не является допустимым.» - PullRequest
0 голосов
/ 20 марта 2020

У меня есть сгруппированный просмотр списка в моем проекте. Когда я пытаюсь добавить событие ItemSelected для списка, я получаю следующую ошибку:

System.InvalidCastException: 'Указанное приведение недействительно.'

Мой код

XAML:

<ListView
  ItemsSource="{Binding AllItems,Mode=TwoWay}">
    <ListView.GroupHeaderTemplate>
        <DataTemplate>
            <ViewCell>
            //header label
                <Label/>
            </ViewCell>
        </DataTemplate>
    </ListView.GroupHeaderTemplate>
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
            <ViewCell.View>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="40*"/>
                        <ColumnDefinition Width="60*"/>
                    </Grid.ColumnDefinitions>

                    <StackLayout
                        Grid.Column="0"
                        BackgroundColor="#f9f9f9"
                        Orientation="Vertical">

                        //Items
                    </StackLayout>

                        <Label Grid.Column="1"/>
                    </Grid>
                </ViewCell.View>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
    <ListView.Footer>
        <Label/>
    </ListView.Footer>
</ListView>

Viewmodel

public ObservableCollection<EventsHB> AllItems
{
    get
    {
        return _allItems;
    }
    set
    {
        _allItems = value;
        OnPropertyChanged("AllItems");
    }
}

XAML.CS

MyEventsListview.ItemSelected += (object sender, SelectedItemChangedEventArgs e) =>
{
    var selectedItem = (EventsHB) e.SelectedItem;
    if (selectedItem != null)
    {
        //loading the next page
    }
    MyEventsListview.SelectedItem = null;
};

1 Ответ

0 голосов
/ 20 марта 2020

Получил решение из моей XF-темы .

Это потому, что EventsHB - это элемент вашей группы, но выбранный элемент является частью элемента вашей группы, и вы не можете привести его к EventsHB. то есть

// Your EventsHB looks like
public class EventsHB : ObservableCollection<Model>
{
   public string Title { set; get; }
}

Тогда тип выбранного элемента - Модель.

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