Xamarin如何将选择器值发送到列表

The*_*her -1 xamarin

我试图将用户选择的选择器值发送到列表.该列表应继续添加用户选择的内容,而不是删除之前的内容.关于如何做到这一点的任何提示?

 private void MainPicker_SelectedIndexChanged(object sender, EventArgs e)
        {

             var product = MainPicker.Items[MainPicker.SelectedIndex];
             DisplayAlert(product, "Layer added to calculation list", "OK");

        }
 private void ListView_ItemSelected(object sender,SelectedItemChangedEventArgs e)
        {
            if (e.SelectedItem == null)
           // if selected add to list?

        }
Run Code Online (Sandbox Code Playgroud)

has*_*mks 5

我相信您的问题是将选定项目从选择器添加到列表视图中,该视图会根据选择器选择继续添加.

您可以将以下代码作为类中的公共对象.

ObservableCollection<LayersClass> listProducts = new ObservableCollection<LayersClass>(); 
Run Code Online (Sandbox Code Playgroud)

然后获取所选的选择器项.假设输出和集合对象属于同一类型.

var product = MainPicker.Items[MainPicker.SelectedIndex];
if(null != product)
{
   LayersClass layer = new LayersClass();
   layer.Product = product;
   listProducts.Add(layer);
}
Run Code Online (Sandbox Code Playgroud)

列表视图的XAML更改 - 您需要在DataTemplate下面添加ViewCell标记,其中包含listview项目子项

<ListView  
                  x:Name="productsListView"
                  HasUnevenRows="False" 
                  HorizontalOptions="FillAndExpand"
                  VerticalOptions="FillAndExpand" 
                  BackgroundColor="White" >
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout>
                            <Label Text="{Binding Product}"></Label>
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
Run Code Online (Sandbox Code Playgroud)

我在DataTemplate标记内添加了ViewCell.