我的RadListView绑定到一个对象列表。我的XAML看起来像这样:
<telerikDataControls:RadListView x:Name="ListView" VerticalOptions="FillAndExpand" SelectionMode="Single" ItemTapped="ListView_OnCellTapped"> 下面是我的事件方法:
void ListView_OnCellTapped(object sender, EventArgs e)
{
var obj = ListView.SelectedItem;
} 但是,SelectedItem始终返回null。我怀疑我需要从EventArgs获取选定的对象,但我不确定如何获取,因为包含在e中的Items集合不能直接访问。有什么想法吗?
编辑1:这是我的XAML:
<telerikDataControls:RadListView x:Name="ListViewMachines" HeightRequest="357" SelectionMode="Single" ItemTapped="ListViewMachines_OnItemTapped">
<telerikDataControls:RadListView.ItemTemplate>
<DataTemplate>
<telerikListView:ListViewTemplateCell Tapped="Cell_OnTapped">
<telerikListView:ListViewTemplateCell.View>
<Grid VerticalOptions="Center" HorizontalOptions="FillAndExpand" Padding="16, 0, 0, 0">
<Grid.RowDefinitions>
<RowDefinition Height="30"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid Row="0" Column="0">
<iconize:IconImage IconSize="25" IconColor="Green" Icon="fa-cogs"></iconize:IconImage>
</Grid>
<Grid Row="0" Column="1">
<Label Text="{Binding MachineName}" FontSize="Medium" />
</Grid>
</Grid>
</telerikListView:ListViewTemplateCell.View>
</telerikListView:ListViewTemplateCell>
</DataTemplate>
</telerikDataControls:RadListView.ItemTemplate>
<telerikDataControls:RadListView.GroupDescriptors>
<telerikListView:PropertyGroupDescriptor PropertyName="FunctionalLocationName"/>
</telerikDataControls:RadListView.GroupDescriptors>
<telerikDataControls:RadListView.GroupHeaderTemplate>
<DataTemplate>
<Grid BackgroundColor="#C1C1C1">
<Label Text="{Binding }" TextColor="#303030" FontSize="Large" HorizontalOptions="Center"/>
</Grid>
</DataTemplate>
</telerikDataControls:RadListView.GroupHeaderTemplate>
</telerikDataControls:RadListView>我尝试将ItemTapped和SelectionChanged添加到telerikDataControls:RadListView中,但都没有返回选定的对象。
发布于 2017-11-27 00:59:06
如下所示获取GridView的SelectedCells:
if (this.radGridView1.SelectedCells.Count > 0)
{
GridViewSelectedCellsCollection selectedCells = this.radGridView1.SelectedCells;
}发布于 2017-11-27 17:35:21
但是,SelectedItem始终返回null。
正如您所描述的,您可能需要在XAML中使用ItemSelected="OnSelection",而不是ItemTapped。
根据Xamarin.Forms ListView Sample: Interactivity,所选操作可能如下所示:
void OnSelection (object sender, SelectedItemChangedEventArgs e)
{
if (e.SelectedItem == null) {
return; //ItemSelected is called on deselection, which results in SelectedItem being set to null
}
DisplayAlert ("Item Selected", e.SelectedItem.ToString (), "Ok");
//comment out if you want to keep selections
ListView lst = (ListView)sender;
lst.SelectedItem = null;
}因此,可以将所选项目作为示例代码(link)获取:
e.SelectedItem请注意,使用SelectedItemChangedEventArgs而不是EventArgs作为参数类型。然后,您可以使用e.SelectedItem直接获取所选项目。
发布于 2017-11-27 19:31:56
感谢snippets的伙伴们,但我设法找到了如何使用ItemTapped事件来做到这一点:
private void ListView_OnItemTapped(object sender, ItemTapEventArgs e)
{
var obj = e.Item as MyObjectType;
}https://stackoverflow.com/questions/47494143
复制相似问题