получить объект в ListView Tappedevent - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть просмотр списка, который заполняется из БД SQLite.Для этого списка были созданы методы для обработки при нажатии элемента списка:

xaml cell:

<ListView x:Name="CalculationListview" ItemsSource="{Binding Calculation}" HasUnevenRows="true" IsPullToRefreshEnabled="true" Refreshing="Handle_Refreshing">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell Tapped="Handle_Tapped">
                <ViewCell.ContextActions>
                    <MenuItem Text="Delete" IsDestructive="True" Clicked="Handle_Clicked" />
                </ViewCell.ContextActions>
                <StackLayout>
                    <Label Text="{Binding Qty}">
                    </Label>
                    <Label Text="{Binding Note}">
                    </Label>
                    <Label Text="{Binding Id}">
                    </Label>
                </StackLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

c #

async void Handle_Tapped(object sender, System.EventArgs e)
{
    var viewCellSelected = sender as MenuItem;
    var calculation = viewCellSelected?.BindingContext as Calculation;

    var page = new ViewSaved(calculation);
    await Navigation.PushModalAsync(page);
}

Как видите,Я хочу получить объект Calculation из заданного элемента списка и отправить объект в новое представление с именем ViewSaved.

К сожалению, моя переменная calculation остается нулевой, и я получаю исключение, когда отправляю пустой объект в новое представление.

Я подозреваю, что проблема sender as MenuItem;.

1 Ответ

0 голосов
/ 26 апреля 2018

вместо того, чтобы помещать обработчик Tapped в ViewCell, либо используйте методы ListView's ItemTapped или ItemSelected

void Handle_ItemTapped(object sender, ItemTappedEventArgs e)
    {
      var item = (Calculation)i.Item;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...