Обрабатывать кнопку в listview Xamarin.Формы

#listview #xamarin #button #xamarin.forms

#listview #xamarin #кнопка #xamarin.forms

Вопрос:

Я новичок в xamarin.forms. Я не знаю, как обрабатывать кнопки в listview. Я хочу создать 2 кнопки с и — функцией. Запись будет иметь значение по умолчанию = 0. Когда я нажимаю кнопку , ввод будет , а — когда я нажимаю кнопку -. Любой, пожалуйста, скажите мне, что я должен делать. Вот мой код:

 <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="QRScanner.Menu">
<ListView x:Name="MyListView"
        ItemsSource="{Binding Items}"
        ItemTapped="Handle_ItemTapped"
        CachingStrategy="RecycleElement">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell
                Height="100"
                >
                <AbsoluteLayout>
                    <StackLayout
                        AbsoluteLayout.LayoutBounds="0,0,0.65,1"
                        AbsoluteLayout.LayoutFlags="All"
                        Orientation="Horizontal">
                        <Image
                        HorizontalOptions="StartAndExpand"
                        WidthRequest="70"
                        HeightRequest="70"
                        VerticalOptions="CenterAndExpand"
                        Source="{Binding imgUrl}"
                        />
                        <Label Text="{Binding name}" 
                        VerticalOptions="CenterAndExpand"
                               HorizontalOptions="CenterAndExpand"
                           />
                        <Label
                            HorizontalOptions="EndAndExpand"
                            Text="{Binding price}"
                            VerticalOptions="CenterAndExpand"/>
                    </StackLayout>
                    <StackLayout
                        AbsoluteLayout.LayoutBounds="1,0,0.35,1"
                        AbsoluteLayout.LayoutFlags="All"
                        Orientation="Horizontal"
                        >
                        <Button
                        VerticalOptions="Center"
                        HeightRequest="30"
                        WidthRequest="30"
                        Clicked="Button_Clicked"
                        Text="-"
                        x:Name="btnMinus"
                        FontSize="12"
                        BackgroundColor="White"
                        TextColor="Green"
                        BorderColor="Green"/>
                        <Entry
                            Keyboard="Numberic"
                        x:Name="edt_quantity"
                            Text="{Binding quantity}"
                            FontSize="12"/>
                        <Button
                            x:Name="btnAdd"
                            VerticalOptions="Center"
                        WidthRequest="30"
                        HeightRequest="30"
                        Clicked="Button_Clicked_1"
                        Text=" "
                            FontSize="12"
                        BackgroundColor="White"
                        TextColor="Green"
                        BorderColor="Green"
                        />
                    </StackLayout>
                </AbsoluteLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
  

Вот изображение моего listview

Я хочу получить данные из api, клиенты могут выбрать номер из меню, после чего отправить его на сервер. Нравится приложение для бронирования.

Комментарии:

1. Привет, ты решил проблему?

2. Извините, сэр, у меня возникла какая-то новая проблема, поэтому я не пробовал, когда я попробую, я сообщу вам результат, большое спасибо за вашу помощь.

3. Да, я расскажу вам позже

Ответ №1:

Обратитесь к следующему коду

в xaml

 <StackLayout
           Orientation="Horizontal"
           HorizontalOptions="EndAndExpand"
           VerticalOptions="Center">
    <Button
          HeightRequest="40"
          WidthRequest="40"
          Clicked="ClickMinus"
          Text="-"
          BackgroundColor="White"
          TextColor="Green"
          BorderColor="Green"/>
    <Entry
         x:Name="edt_quantity"
         Text="0"/>
    <Button
         WidthRequest="40"
         HeightRequest="40"
         Clicked="ClickPlus"
         Text=" "
         BackgroundColor="White"
         TextColor="Green"
         BorderColor="Green"/>
</StackLayout>
  

в xaml.cs

 private void ClickPlus(object sender, EventArgs e)
{
  int num = int.Parse(edt_quantity.Text) 1;
  edt_quantity.Text = num.ToString();
}

private void ClickMinus(object sender, EventArgs e)
{
  int num = int.Parse(edt_quantity.Text)-1;
  edt_quantity.Text = num.ToString();
}
  

Если вы хотите реализовать это в viewcell.Вы можете создать подкласс viewcell.

 <ListView x:Name="MyListView"
    CachingStrategy="RecycleElement">
    <ListView.ItemTemplate>
        <DataTemplate>
            <local:MyViewCell Height="100" />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
  

И в пользовательской ячейке просмотра

в xaml

 <ViewCell xmlns="http://xamarin.com/schemas/2014/forms" 
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="App6.ViewCell1">
 <ViewCell.View>
    <AbsoluteLayout>
        //...
        <StackLayout
                    AbsoluteLayout.LayoutBounds="1,0,0.35,1"
                    AbsoluteLayout.LayoutFlags="All"
                    Orientation="Horizontal"
                    >
            <Button
                    VerticalOptions="Center"
                    HeightRequest="30"
                    WidthRequest="30"
                    Clicked="BtnMinus_Clicked"
                    Text="-"
                    x:Name="btnMinus"
                    FontSize="12"
                    BackgroundColor="White"
                    TextColor="Green"
                    BorderColor="Green"/>
            <Entry
                        Keyboard="Numberic"
                        x:Name="myEntry"
                        Text="0"
                        FontSize="12"/>
            <Button
                        x:Name="btnAdd"
                        VerticalOptions="Center"
                    WidthRequest="30"
                    HeightRequest="30"
                    Clicked="BtnAdd_Clicked"
                    Text=" "
                        FontSize="12"
                    BackgroundColor="White"
                    TextColor="Green"
                    BorderColor="Green"
                    />
        </StackLayout>
    </AbsoluteLayout>
  </ViewCell.View>
</ViewCell>
  

в xaml.cs

 public partial class MyViewCell: ViewCell
{
    public MyViewCell()
    {
        InitializeComponent ();
    }


    private void BtnMinus_Clicked(object sender, EventArgs e)
    {
        int num = int.Parse(myEntry.Text) - 1;
        myEntry.Text = num.ToString();
    }

    private void BtnAdd_Clicked(object sender, EventArgs e)
    {
        int num = int.Parse(myEntry.Text)   1;
        myEntry.Text = num.ToString();
    }
}
  

Комментарии:

1. Доступна ли она для элемента в представлении списка?

2. Да, вы можете вызывать их в ячейке просмотра

3. проблема сейчас в том, что я не могу вызвать edt_quantity в xaml.cs

4. Можете ли вы поделиться своим примером?

5. Отредактировал и добавил изображение, пожалуйста, помогите мне