我想获取动态添加的列表框中项目的当前索引。本质上,我的项目是一个 HubTile,并且 Hubtiles 一次添加一个点击事件。Hubtile 项目的集合保存在 ObservableCollection 中。此 observablecolelction 绑定到显示项目的列表框。为了说明,我所拥有的如下:
标签页.xaml
<ListBox x:Name="tileList" Grid.Row="0" Margin="12,0,12,0" toolkit:TiltEffect.IsTiltEnabled="True">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<toolkit:HubTile Title="{Binding TileName}" Margin="6"
Notification="{Binding Notification}"
DisplayNotification="{Binding DisplayNotification}"
Message="{Binding Message}"
GroupTag="{Binding GroupTag}"
Source="{Binding ImageUri}"
Tap="hubTile_Tap">
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu x:Name="menu">
<toolkit:MenuItem Header="pin to start" Tap="MenuItem_Tap"/>
<toolkit:MenuItem Header="delete" Tap="deleteMenuItem_Tap"/>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</toolkit:HubTile>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
TabsPage.xaml.cs
ObservableCollection<TileItem> tileItems;
public TabsPage()
{
InitializeComponent();
CreateTileList(); //starts the list of HubTiles with a single main tile
}
private void CreateTileList()
{
tileItems = new ObservableCollection<TileItem>()
{
//TileItem is
new TileItem() { ImageUri = mainImage, Title = "main", /*Notification = "",*/ Message = "main", GroupTag = "MainGroup", TileName = "main" },
};
//Set the first tile item
this.tileList.ItemsSource = tileItems; //sets the tileList Listbox ItemsSource to the tileItems ObservableCollection
}
void addNew_Click(object sender, EventArgs e)
{
BitmapImage newTileImage = new BitmapImage();
var newItem = new TileItem() { ImageUri = newTileImage, Title = "new", /*Notification = "",*/ Message = "new HubTile", GroupTag = "TileGroup", TileName = "new" };
tileItems.Add(newItem); //update UI immediately and add to collection
}
private void hubTile_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
//how to get the current index of the tapped HubTile//
//var tap = (((sender as HubTile).Parent as ListBox).SelectedIndex); //NullReferenceException thrown
}
因此,HubTile 项目已正确添加到 UI,但在点击事件上我不知道如何获取当前点击的 HubTile 项目的选定索引?