Согласно вашему описанию, я не уверен, хотите ли вы получить текст метки PrecioProducto для выбранного элемента ListView, или вы хотите получить весь текст метки PrecioProducto для ListView.
Если это первый случай, По мнению Джейсона, я предлагаю вам использовать привязку для ListView SelectedItem .
<ListView
x:Name="listaArticulosCarrito"
BackgroundColor="White"
ItemsSource="{Binding pricemodels}"
SelectedItem="{Binding selecteditem}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal">
<StackLayout HorizontalOptions="StartAndExpand">
<Label
Padding="7"
FontSize="Large"
Text="{Binding Producto}"
TextColor="Black" />
</StackLayout>
<StackLayout HorizontalOptions="EndAndExpand" Orientation="Horizontal">
<Label
x:Name="PrecioProducto"
HorizontalOptions="EndAndExpand"
Text="{Binding Precio}"
TextColor="LightGray"
VerticalOptions="CenterAndExpand" />
<Label
x:Name="CantidadProducto"
Padding="7"
FontSize="Large"
Text="{Binding Cantidad}"
TextColor="Black" />
</StackLayout>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Пожалуйста, не забудьте реализовать интерфейс INotifyPropertyChanged для уведомления об изменении данных.
public partial class Page16 : ContentPage, INotifyPropertyChanged
{
public ObservableCollection<pricemodel> pricemodels { get; set; }
private pricemodel _selecteditem;
public pricemodel selecteditem
{
get { return _selecteditem; }
set
{
_selecteditem = value;
RaisePropertyChanged("selecteditem");
}
}
public Page16()
{
InitializeComponent();
pricemodels = new ObservableCollection<pricemodel>()
{
new pricemodel(){Producto="product 1",Precio=21.01,Cantidad="product1"},
new pricemodel(){Producto="product 2",Precio=31.01,Cantidad="product2"},
new pricemodel(){Producto="product 3",Precio=41.01,Cantidad="product3"},
new pricemodel(){Producto="product 4",Precio=51.01,Cantidad="product4"},
new pricemodel(){Producto="product 5",Precio=61.01,Cantidad="product5"}
};
this.BindingContext = this;
}
public event PropertyChangedEventHandler PropertyChanged;
public void RaisePropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
private void Button_Cicked(object sender, EventArgs e)
{
var PrecioProducto = selecteditem.Precio;
Console.WriteLine("the listview select item precioproduct label text is {0}",PrecioProducto);
}
}
public class pricemodel
{
public string Producto { get; set; }
public double Precio { get; set; }
public string Cantidad { get; set; }
}
Если это второе, вы хотите получить весь текст метки PrecioProducto для ListView, вам нужно просто указать ценовые модели, чтобы получить значение Precio.
foreach(pricemodel m in pricemodels)
{
var precio = m.Precio;
}