我有一个包含汽车品牌的 ListView 。我正在做一个基本的调查应用程序,用户需要选择所有适用的内容。到目前为止我只能根据网上的教程选择一项。有没有办法获得多选 ListView 并获取值?或者我还可以做哪些其他事情来实现这一目标?
var listView = new ListView();
listView.ItemsSource = new string[]
{
"Honda",
"Toyota",
"Ford",
"Tesla"
};
最佳答案
您需要做的第一件事是创建一个通用的东西,如下所示:
public class SelectableData<T>
{
public T Data { get; set; }
public bool Selected { get; set; }
}
接下来,您需要创建 ListView,用于显示数据和 Switch。在此示例中,我的数据仅包含名称和描述。然后,包装器包含选定的 bool 值。
<ListView ItemsSource="{Binding DataList}" Margin="20">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Margin="0,0,0,10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<StackLayout VerticalOptions="CenterAndExpand">
<Label Text="{Binding Data.Name}" />
<Label Text="{Binding Data.Description}" FontSize="10" />
</StackLayout>
<Switch IsToggled="{Binding Selected}" Grid.Column="1" />
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
然后用这样的东西绑定(bind)ListView:
public ObservableCollection<SelectableData<ExampleData>> DataList { get; set; }
ExampleData 类似于:
public class ExampleData
{
public string Name { get; set; }
public string Description { get; set; }
}
要获取所选项目,请使用 foreach 循环遍历 DataList
并检查所选属性,如下所示:
foreach(var item in DataList)
{
item.Selected // true if selected else false.
}
关于xamarin - 如何进行多选 ListView 并获取所选项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55179973/