问题描述
在Xamarin中,尝试获取collectionView中的项目列表
我的模特是
public class DrugModel
{
public string Name { get; set; }
public bool IsUsed { get; set; }
public int NumberUsed { get; set; }
}
]将CillectionView绑定到Returview Api的列表,并且当调试器到达我的change事件时,无法获取数据并将其放在我的列表中
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class DrugMissionPage : ContentPage
{
public IList<DrugModel> SelectedDrug;
public DrugMissionPage()
{
InitializeComponent();
}
private void listDrug_SelectionChanged(object sender,SelectionChangedEventArgs e)
{
var selectedDrugList =e.CurrentSelection ;
var tyy = selectedDrugList.ToList() as IList<DrugModel>;
foreach (var item in selectedDrugList)
{
SelectedDrug.Add(item);
}
}
这是我的观点
<CollectionView
x:Name="listDrug"
VerticalOptions="StartAndExpand"
SelectionMode="Multiple"
ItemsLayout="VerticalList" SelectionChanged="listDrug_SelectionChanged">
<CollectionView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10*"></ColumnDefinition>
<ColumnDefinition Width="2*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Frame Padding="10">
<Frame BackgroundColor="AliceBlue" HasShadow="True" CornerRadius="10" Padding="10" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
<StackLayout Orientation="Horizontal">
<Label Text="{Binding Name}" FontSize="Default" HorizontalOptions="StartAndExpand" Grid.Row="0" Grid.Column="0" Margin="0,10,0"></Label>
</StackLayout>
</Frame>
</Frame>
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
}
我该如何填充
public IList<DrugModel> SelectedDrug;
调试器通过时
var tyy = selectedDrugList.ToList() as IList<DrugModel>;
foreach (var item in selectedDrugList)
{
SelectedDrug.Add(item);
}
“ tyy” 将为空
解决方法
您可以使用Cast<class>
将列表转换为列表。
更改:
var tyy = selectedDrugList.ToList() as IList<DrugModel>;
收件人:
var tyy = selectedDrugList.Cast<DrugModel>();