通用Windows应用程序 - 我有一个ListView的产品,添加到购物车按钮。

时间:2017-05-11 06:26:39

标签: c# xaml

毋庸置疑,我是Universal Windows Apps开发的初学者,我需要帮助。我有一个ListView,其中的项目代表产品显示为目录。每个项目都包含“添加到购物车”'按钮。我的问题是:当点击按钮时,如何将按钮被点击的特定项目传递给将产品放入购物车的方法。这是我的xaml页面:

<ListView Name="productsList">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid>...
                        ....
                        <StackPanel Grid.Column="1" Margin="10">
                            <TextBlock Name="productName" FontSize="14" Text="{Binding Name}" ></TextBlock>
                            <TextBlock Name="productPrice" FontSize="14" Text="{Binding Price}" Margin="0,5" ></TextBlock>
                            <Button  Name="addToCart" Content="Stavi u korpu" FontSize="14" Tapped="addToCart_OnTapped" ></Button>
                        </StackPanel>...
                    ....
                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

按钮&#39; addToCart&#39;点击我想将项目作为参数传递给C#代码中的以下方法,它将产品放入购物车:

private void addToCart_OnTapped(object sender, TappedRoutedEventArgs e)
    {
       // Code to put the product into a cart. This code is not important right now. What is important is how do I pass it a proper parameter?
    }

1 个答案:

答案 0 :(得分:0)

初学者解决此问题的最简单方法是将对象作为标记传递。

                    <StackPanel Grid.Column="1" Margin="10">
                        <TextBlock Name="productName" FontSize="14" Text="{Binding Name}" ></TextBlock>
                        <TextBlock Name="productPrice" FontSize="14" Text="{Binding Price}" Margin="0,5" ></TextBlock>
                        <Button  Name="addToCart" Tag="{Binding .}" Content="Stavi u korpu" FontSize="14" Tapped="addToCart_OnTapped" ></Button>
                    </StackPanel>

Binding .指的是列表中的当前对象。

因此,在您的活动中,您可以获得您点击的特定按钮,并将其从标签中删除。

var button = (Button)sender; 
var obj = (Product)button.Tag;