【问题标题】:Xamarin - CollectionView, pass current item as a command parameterXamarin - CollectionView,将当前项目作为命令参数传递
【发布时间】:2020-09-02 14:51:56
【问题描述】:

我有一个绑定到 ObservableCollection 的 CollectionView,在视图的每一行内我都有一个(LIKE/UNLIKE)按钮,当单击该按钮时,会调用 ViewModel 上的命令,该命令应读取 ID +状态(按钮选中/未选中)以确定它是否应该执行 LIKE 或 UNLIKE API 调用。 我的问题是,如何将当前项目(按钮的父行)作为命令参数(产品类型)传递?

这是我的 XAML:

<CollectionView ItemsSource="{Binding Products}" SelectionMode="Single" SelectedItem="{Binding SelectedProduct , Mode=TwoWay}" RemainingItemsThreshold="{Binding ItemsThreshold}" RemainingItemsThresholdReachedCommand="{Binding LoadProductsCommand}" BackgroundColor="Fuchsia">
                <CollectionView.ItemsLayout>
                    <GridItemsLayout Orientation="Vertical" VerticalItemSpacing="10"></GridItemsLayout>
                </CollectionView.ItemsLayout>
                <CollectionView.ItemTemplate>
                    <DataTemplate>
                        <Frame BorderColor="Black" BackgroundColor="Green" HeightRequest="100" Padding="0" Margin="0 , 10" HasShadow="True">
                            <Grid Padding="0">
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="*"></RowDefinition>
                                    <RowDefinition Height="*"></RowDefinition>
                                </Grid.RowDefinitions>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"></ColumnDefinition>
                                    <ColumnDefinition Width="*"></ColumnDefinition>
                                </Grid.ColumnDefinitions>

                                <Image Source="{Binding photo_1}" Aspect="AspectFill" Grid.Row="0" Grid.Column="0"></Image>

                                <StackLayout Grid.Row="1" Grid.Column="1" BackgroundColor="Yellow" HorizontalOptions="End">
                                    <button:SfButton Text="HEART" IsCheckable="True" IsChecked="{Binding liked}" Command="{Binding Source={x:Reference MyProductsPage} , Path=BindingContext.LikeCommand}" CommandParameter="{Binding ???}"></button:SfButton>
                                    <Label Text="{Binding total_likes}" HorizontalTextAlignment="Center"></Label>
                                </StackLayout>

                            </Grid>
                        </Frame>
                    </DataTemplate>
                </CollectionView.ItemTemplate>
            </CollectionView>

【问题讨论】:

    标签: xaml xamarin


    【解决方案1】:

    像这样绑定:

    <button:SfButton Text="HEART" IsCheckable="True" IsChecked="{Binding liked}" Command="{Binding Source={x:Reference MyProductsPage} , Path=BindingContext.LikeCommand}" CommandParameter="{Binding .}"></button:SfButton>
    

    这里是代码示例:ContactView

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      • 2012-03-25
      • 2015-04-08
      • 2011-09-06
      • 2010-11-12
      相关资源
      最近更新 更多