简体   繁体   中英

xamarin forms - when picker selected - send id of hidden label to code behind c#

User selects quantity of items they want to purchase from a picker, inside a ListView, OnPickerSelectedIndexChanged() is hit and passes the quantity value chosen....but I would also like to pass back the ProductId value of the associated label from inside the 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?
}

each row in the ListView will have it's own BindingContext, which should apply to all the elements in that row

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

   int Quantity = picker.SelectedIndex;

   var item = (MyListModel)picker.BindingContext;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM