【发布时间】:2021-08-22 11:26:13
【问题描述】:
我有一个Listview,它有拨动开关。我想用拨动开关在Listview 中只选择一项。当我选择第二个切换时,第一个切换必须再次停用。例如在图片中;当我选择 Rekorida 然后我选择 Merchandizing 时,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>
还有我的功能
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;
}
}
我正在尝试获取列表视图中所选项目的 id 并且我成功地做到了。但是我希望用户只能同时选择一个项目,因为它具有很好的视觉效果,并且不会混淆。
【问题讨论】:
-
您介意共享一个最小代码,例如您的 xaml 吗?
-
@Cfun 我编辑了我的帖子。你可以看到我的代码。
-
如果我选中“others”或“trade check”或四个开关中的任何一个开关,您认为其余的不会被选中吧?
-
没错!!这就是我想做的全部
标签: xaml xamarin xamarin.forms xamarin.forms.listview