Получение одного значения из списка для использования в расчете - PullRequest
0 голосов
/ 05 апреля 2019

Я немного запутался здесь.Я жестко закодировал свой список, но я хочу получить одно конкретное значение из каждого элемента в списке (значение Цена или iPrice).Так что когда в xaml нажата кнопка, это увеличивает общую стоимость всего.

Нажатие кнопки Общая цена должна увеличиться. Я не уверен, что я исследую с неправильной терминологией, этокажется, что-то, что должно быть несколько упрощенным.

Я пытался проверить параметр Price и, если значение соответствует заданному значению, например, 10, просто добавьте 10 к цене. Эта функция работает, но даже если она не работает, она не выглядит правильно

<GridView Name="mylist" ItemsSource="{x:Bind itemlist}" Margin="0,91,0,0">
    <GridView.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <StackPanel>
                    <TextBlock Text="{Binding ItemName}" />
                </StackPanel>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Description}" />
                </StackPanel>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Price}" />
                </StackPanel>
                <StackPanel Orientation="Horizontal">
                    <Button Content="Add" Click="CheckTotal_Click" ></Button>
                </StackPanel>
            </StackPanel>
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>    

Code-Behind:

   int Pricing = Model.TotalSpent;
List<Item> itemlist = new List<Item>();
public void Items()
{          
    itemlist.Add(new Item("Coke", "A Fizzy Soft Drink", 15));
    itemlist.Add(new Item("Burger", "A Mouth Watering Mouthfull", 25));
    itemlist.Add(new Item("Chips", "Crunchy Crispy Goodness!", 10));
    itemlist.Add(new Item("Bilton", "Yum Yum", 50));
    itemlist.Add(new Item("Caps", "Show of how much you love us", 80));
}
  void CheckTotal_Click(object sender, RoutedEventArgs e)

        {

            txtTotal.Text = "Total: " + Pricing ;
        }

Модель:

public class Item
{
    private string iName;
    private string iDescription;
    private int iPrice;

    public Item(string iName, string iDescription, int iPrice)
    {
        this.iName = iName;
        this.iDescription = iDescription;
        this.iPrice = iPrice;
    }

    public string ItemName
    { 
        get { return iName; }
        set { iName = value; }
    }

    public string Description
    {
        get { return iDescription; }
        set { iDescription = value; }
    }
    public int Price
    {
        get { return iPrice; }
        set { iPrice = value; }
    }
}

Результатом внешнего вида является следующий:

Кокс

A FizzyБезалкогольный напиток

Цена 15

(кнопка)

1 Ответ

1 голос
/ 06 апреля 2019
 private void mylist_ItemClick(object sender, ItemClickEventArgs e)
        {
            var clickedItem = (Item)e.ClickedItem;
            Pricing += clickedItem.Price;
            var collection = (ObservableCollection<Item>)mylist.ItemsSource;
            int index = collection.IndexOf(clickedItem);



            addtototal();
        }

        public int addtototal()
        {
            Model.TotalSpent = Pricing;
            txtTotal.Text = Pricing.ToString();
            return Pricing;

        }

Я прекратил попытки напрямую получить доступ к нажатому члену в представлении списка, поэтому я намеревался получить индекс этого «нажатого элемента», а затем установить жестко закодированные значения «Цена» для каждого индекса, например, если (индекс == 1) Цены + = 10;

Вместо этого я использовал аргументы события, чтобы извлечь значение из проиндексированного «элемента».

Я прошу прощения, если объяснение ужасно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...