Как правило, вы не можете получить доступ к любому элементу управления внутри шаблона элемента по имени. предоставление любого элемента управления внутри ItemTemplate x: Name даст вам ошибку компилятора, если вы попытались получить доступ к этому элементу управления в коде позади. Вместо этого назначьте обработчик Click (или используйте команду) в XAML.
Так что мне нужно чтобы создать метод для нажатия кнопки, в вашем коде я использую метод subButton_Clicked. Тогда Object is Sender , который является обработчиком события нажатия кнопки. Затем мы должны найти родительский макет или родительский контейнер для кнопки, проанализировав файл xaml, наконец, мы можем получить доступ ко всем дочерним элементам родительского элемента.
Используя ваш код, чтобы сделать один пример:
<StackLayout>
<ListView
x:Name="listART"
BackgroundColor="#f5cda2"
HasUnevenRows="True"
ItemsSource="{Binding products}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal">
<StackLayout HorizontalOptions="FillAndExpand">
<Label
Margin="5,0,0,0"
FontSize="Large"
Text="{Binding Producto}" />
<Button
x:Name="subButton"
Margin="5,5,0,5"
BackgroundColor="#b27b4b"
Clicked="subButton_Clicked"
FontSize="Small"
Text="-"
TextColor="Black"
WidthRequest="30" />
<StackLayout>
<Entry
x:Name="productQuantity"
Margin="5,0,0,0"
FontSize="Small"
HorizontalOptions="Center"
Keyboard="Numeric"
MaxLength="2"
Placeholder="0"
Text="0" />
</StackLayout>
<Button
x:Name="addButton"
Margin="5,5,0,5"
BackgroundColor="#b27b4b"
Clicked="addButton_Clicked"
FontSize="Small"
Text="+"
TextColor="Black"
WidthRequest="30" />
<Button
x:Name="addCart"
Margin="5,3,5,3"
BackgroundColor="#b27b4b"
Clicked="addCart_Clicked"
FontSize="Small"
Text="Agregar"
TextColor="Black" />
</StackLayout>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<StackLayout VerticalOptions="EndAndExpand">
<Button
x:Name="goToCart"
Margin="1"
BackgroundColor="White"
Clicked="goToCart_Clicked"
CornerRadius="5"
Text="Ir al carrito" />
</StackLayout>
</StackLayout>
public partial class Page7 : ContentPage
{
public ObservableCollection<Productmodel> products { get; set; }
public Page7()
{
InitializeComponent();
products = new ObservableCollection<Productmodel>()
{
new Productmodel(){Producto="product 1"},
new Productmodel(){Producto="product 2"},
new Productmodel(){Producto="product 3"},
new Productmodel(){Producto="product 4"},
new Productmodel(){Producto="product 5"},
new Productmodel(){Producto="product 6"}
};
this.BindingContext = this;
}
private void goToCart_Clicked(object sender, EventArgs e)
{
}
private void addButton_Clicked(object sender, EventArgs e)
{
}
private void addCart_Clicked(object sender, EventArgs e)
{
}
private async void subButton_Clicked(object sender, EventArgs e)
{
var buttonClickHandler = (Button)sender;
StackLayout parentstacklayout = (StackLayout)buttonClickHandler.Parent;
StackLayout stacklayout1 =(StackLayout)parentstacklayout.Children[2];
Entry productQuantity = (Entry)stacklayout1.Children[0];
await DisplayAlert("productQuantity detail","the productQuantity text is "+productQuantity.Text,"OK");
}
}
public class Productmodel
{
public string Producto { get; set; }
}
Это скриншот:
![enter image description here](https://i.stack.imgur.com/MVmHY.gif)