xamarin формы - когда выбран сборщик - отправить идентификатор скрытой метки для кода позади c# - PullRequest
0 голосов
/ 03 апреля 2020

Пользователь выбирает количество предметов, которые он хочет приобрести, из средства выбора, внутри ListView, OnPickerSelectedIndexChanged () получает удар и передает выбранное значение количества .... но я также хотел бы вернуть значение ProductId соответствующей метки изнутри listView.

  <ListView ItemsSource="{Binding FoodList}" HasUnevenRows="True" SeparatorVisibility="None" ItemTapped="OnItemSelected">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <Grid Padding="10" RowSpacing="10" ColumnSpacing="10">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="*"/>
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>

                        <Label Grid.Column="0" Text="{Binding **ProductId** }" VerticalOptions="End" IsVisible="False"/>
                        <controls:CircleImage  Grid.Column="1"  Grid.Row="1" HeightRequest="60" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand" Aspect="AspectFill" WidthRequest="66" Grid.RowSpan="2" Source="{Binding Image}"/>
                        <Label Grid.Column="2" Grid.Row="1" Text="{Binding Name}" VerticalOptions="End"/>
                        <Label Grid.Column="2" Grid.Row="2" VerticalOptions="Start" Text="{Binding Detail}"/>
                        <Label Grid.Column="3" Grid.Row="2" VerticalOptions="Start" Text="{Binding Price}"/>
                        <Picker Grid.Column="4"  Grid.Row="2" SelectedIndexChanged="OnPickerSelectedIndexChanged">
                            <Picker.Items>
                                <x:String>0</x:String>
                                <x:String>1</x:String>
                                <x:String>2</x:String>
                                <x:String>3</x:String>
                                <x:String>4</x:String>
                                <x:String>5</x:String>
                                <x:String>6</x:String>
                            </Picker.Items>
                            </Picker>
                    </Grid>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>


 void OnPickerSelectedIndexChanged(object sender, EventArgs e)
        {
            var picker = (Picker)sender;
            int Quantity = picker.SelectedIndex; //captures quantity ordered

            //How can I capture the ProductId here?
}

1 Ответ

0 голосов
/ 03 апреля 2020

каждая строка в ListView будет иметь свой собственный BindingContext, который должен применяться ко всем элементам в этой строке

protected void SelectedIndexChanged(object sender, EventArgs e)
{
   var picker = (Picker)sender;

   int Quantity = picker.SelectedIndex;

   var item = (MyListModel)picker.BindingContext;
}
...