#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. Отредактировал и добавил изображение, пожалуйста, помогите мне