我有Xamarin.Forms应用程序,其中在列表视图中使用了选择器,将数据绑定到列表视图后,输出将有5个选择器。我在该页面中有一个提交按钮。单击按钮时,我想获取选择器的5个值。我怎样才能做到这一点?任何帮助表示赞赏。
我的Xaml
<StackLayout Orientation="Vertical" >
<ListView x:Name="QuestionsListView" ItemsSource="{Binding}"
HasUnevenRows="True"
IsVisible="False"
ItemTapped="QuestionsListView_ItemTapped"
CachingStrategy="RecycleElement"
SeparatorVisibility="Default"
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<StackLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" Orientation="Vertical">
<StackLayout Orientation="Horizontal">
<Label Text="•" FontSize="Medium" TextColor="Green" Margin="0,20,0,0"/>
<Label Text="{Binding Ques}" MaxLines="5" FontSize="Small" TextColor="#474747" Margin="0,20,0,5">
</Label>
</StackLayout>
<StackLayout Orientation="Horizontal" Margin="10,0,10,0" HorizontalOptions="FillAndExpand" >
<Picker x:Name="picker1" Title="Select answer" ItemsSource="{Binding Answers}" ItemDisplayBinding="{Binding Text}" HorizontalOptions="FillAndExpand" FontSize="Small" TextColor="Gray">
</Picker>
</StackLayout>
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Button Text="Submit" BackgroundColor="#10c0d5" Clicked="evaluate_clicked" TextColor="White" HorizontalOptions="FillAndExpand" BorderRadius="7" BorderColor="#10c0d5" BorderWidth = "2" Margin="10,5,10,10"></Button>
</StackLayout>
我的Xaml.cs
private async void evaluate_clicked(object sender, EventArgs args)
{
//How can I get the picker values?
}
答案 0 :(得分:2)
解决方案:
添加属性 SelectedItem 的新绑定。
<Picker Title="Select answer" ItemsSource="{Binding Answers}" ItemDisplayBinding="{Binding Text}" HorizontalOptions="FillAndExpand" FontSize="Small" TextColor="Gray" SelectedItem="{Binding SelectItem ,Mode=OneWayToSource}">
</Picker>\
在您的模型中(例如,我的模型称为Data)
public class Data
{
public string Ques { get; set; }
public string Text { get; set; }
public List<string> Answers { get; set; }
public string SelectItem { get; set; }
}
并在您的 xaml.cs
中private void Button_Clicked(object sender, EventArgs e)
{
foreach(Data data in MySource)
{
string selectValue = data.SelectItem;
if(selectValue==null)
{
selectValue = "unSelected" ;
}
Console.WriteLine(selectValue);
}
}
MySource 是您的 listView
的 itemSource