微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

以xamarin形式收集CollectionView一行中Button的标识符

如何解决以xamarin形式收集CollectionView一行中Button的标识符

我正在以 xamarin 形式开发应用程序,但在访问 CollectionView 中的按钮事件时遇到问题。对于每个被选中的按钮,根据它所在的行,它会对 id 做不同的事情。

我的带有 CollectionView 的 xaml 代码如下:

        <CollectionView.ItemTemplate>
            <DataTemplate>
                <Grid Padding="10">

                        <Grid.ColumnDeFinitions>
                        <ColumnDeFinition Width="10" />
                        <ColumnDeFinition Width="120" />
                        <ColumnDeFinition Width="100" />
                        <ColumnDeFinition Width="250" />
                        <ColumnDeFinition Width="85" />
                        <ColumnDeFinition Width="70" />
                        <ColumnDeFinition Width="70" />
                        </Grid.ColumnDeFinitions>


                    <Label Grid.Column="1"
                        Text="{Binding id_cliente}"
                           TextColor="black"
                           VerticalOptions="CenterandExpand"
                        FontAttributes="Bold" />
                    
                    <Label 
                        Grid.Column="2"
                        Text="{Binding categoria}"
                        FontAttributes="Italic"
                        VerticalOptions="CenterandExpand"
                           TextColor="black"/>

                    <Label Grid.Column="3"
                        Text="{Binding descripcion}"
                           TextColor="black"
                           VerticalOptions="CenterandExpand"
                        FontAttributes="Bold" />
                    
                    
                    <Label 
                        Grid.Column="4"
                        Text="{Binding estado}"
                           TextColor="Yellow"
                        VerticalOptions="CenterandExpand"
                        FontAttributes="Bold" />


                        <Button Grid.Column="5" Text="Confirmar" BorderColor="#2b3c3c" BorderWidth="1" FontAttributes="Bold" BackgroundColor="#4ba862" TextColor="White"  HeightRequest="60" Margin="0,0" x:Name="btnconfirmar" Clicked="ButtonConfirmacion_Clicked" Command="{Binding id_trabajo}"/>
                        
                        <Button Grid.Column="6" Text="Asignar" BorderColor="#2b3c3c" BorderWidth="1" FontAttributes="Bold" BackgroundColor="#4ba862" TextColor="White"  HeightRequest="60" Margin="0,0" x:Name="btnasignar" Clicked="ButtonListaTrabajos_Clicked"/>

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

在该页面的 cs 代码中,我有

private void ButtonConfirmacion_Clicked(object sender,EventArgs e)
    {

        Trabajo selectedItem1 = e.CurrentSelection[0] as Trabajo;

    }

代码,当该行被选择时,如果它选择了已选择的项目,则使用 OnSelectionChanged (sender,e) 方法

解决方法

您可以使用下面的代码将按钮的 x:Name 排成一行。

private void ButtonConfirmacion_Clicked(object sender,EventArgs e)
    {       

        var button = sender as Button;
        var elemets = (button.Parent as Grid).Children;

        foreach (var item in elemets)
        {
            if (item.GetType().Name == "Button")
            {                   
                var btn_name = item.StyleId;     
                
            }
        }

    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。