单击按钮后

时间:2019-04-01 05:13:24

标签: listview xamarin.forms

我有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?
        }

enter image description here

1 个答案:

答案 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