Xaml 如何在Listview中仅选择一个切换开关?

Xaml 如何在Listview中仅选择一个切换开关?,xaml,xamarin,xamarin.forms,xamarin.forms.listview,Xaml,Xamarin,Xamarin.forms,Xamarin.forms.listview,我有一个列表视图,它有切换开关。我只想使用切换开关在列表视图中选择一项。当我选择第二个切换时,第一个切换必须再次停用。例如在图片中;当我选择Rekorida,然后选择merchandising,Rekorida必须返回禁用。每次只能激活一个选项。有可能在Xamarin做吗 我的列表视图代码: <ScrollView> <ListView x:Name="ShipListView" HasUnevenRows=&qu

我有一个
列表视图
,它有切换开关。我只想使用切换开关在
列表视图中选择一项。当我选择第二个切换时,第一个切换必须再次停用。例如在图片中;当我选择Rekorida,然后选择
merchandising
Rekorida
必须返回禁用。每次只能激活一个选项。有可能在Xamarin做吗

我的列表视图代码:

 <ScrollView>
                    <ListView x:Name="ShipListView" HasUnevenRows="True" SeparatorVisibility="Default" SelectionMode="Single">
                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <ViewCell>

                                    <Grid Margin="4, 3, 4, 3" Padding="2" BackgroundColor="White">
                                        <Grid.RowDefinitions HeightRequest="40">
                                            <RowDefinition></RowDefinition>
                                            <!--<RowDefinition Height="20"></RowDefinition>-->
                                        </Grid.RowDefinitions>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="80*"></ColumnDefinition>
                                            <ColumnDefinition Width="*"></ColumnDefinition>
                                            <ColumnDefinition Width="40*"></ColumnDefinition>
                                        </Grid.ColumnDefinitions>
                                        <Label Text="{Binding ShipName}" TextColor="DeepPink" Grid.Column="0" FontAttributes="Bold"/>
                                        <Switch  IsToggled="{Binding Selected}" Grid.Column="2" Toggled="OnShipToggled" />
                                    </Grid>

                                </ViewCell>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>
                </ScrollView>

我正在尝试获取listview中所选项目的id,我成功地完成了此操作。Bu我希望用户同时只能选择一个项目,因为它具有良好的可视性,并且不会混淆。

在代码隐藏文件中获取视图模型,然后过滤掉所选切换,并将其余项目标记为false

private YourViewModel MyViewModel{get=>BindingContext作为YourViewModel;}
如果(型号!=null)
{
selectedMemberShipOid=model.Oid;
MyViewModel.ShipListView.Where(x=>x.Oid!=
selectedMemberShipOid).Foreach(x=>x.Selected=false)
}

你介意分享一个最小的代码吗,比如你的xaml?@Cfun我编辑了我的帖子。你可以看到我的代码。如果我检查“其他”或“交易检查”或四个开关中的任何一个开关,你希望其余的开关被取消勾选,对吗?没错!!这就是我想要的do@Veysel你能告诉我名单上的名字吗。它绑定到ListView。您可以用MyList“ShipListView”替换列表名。这是我的列表名。你的方式是如此合乎逻辑。我试试看。谢谢你的回答。如果有效,我会接受你的回答当然,谢谢!!!我不能完全解决我的问题,但我可以说我几乎用你的好主意解决了它。这就是为什么我会接受你的回答。再次感谢!!!
async void OnShipToggled(object sender, ToggledEventArgs e)
    {
        
        checkShipSelected = !checkShipSelected;
        if(checkShipSelected)
        {
            
            ViewCell cell = (sender as Switch).Parent.Parent as ViewCell;

            ParametersMemberShipInformation model = cell.BindingContext as ParametersMemberShipInformation;

            if (model != null)
            {
                selectedMemberShipOid = model.Oid;
            }
        }
        else
        {
            return;
        }
        

    }