如何为列表框中的行提供 OnClick 事件处理程序
本文关键字:OnClick 事件处理 程序 列表 | 更新日期: 2023-09-27 18:36:33
我有一个列表框,其中包含项目列表,我想要的是当我单击特定项目时,我想导航到另一个页面并将该特定项目的名称发送到导航页面。
我的 xaml 代码:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<ListBox x:Name="List" HorizontalAlignment="Left" Height="612" Margin="6,7,0,0" VerticalAlignment="Top" Width="443" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Width="400" Height="50" KeyUp="StackPanel_KeyUp_1">
<TextBlock x:Name="tbName" Width="200" Height="44" FontSize="22" FontWeight="Bold" Text="{Binding Name}"/>
<TextBlock x:Name="tbEmail" Width="200" Height="44" FontSize="22" Text="{Binding Email}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
在下面的 C# 代码中,我只尝试导航到另一个页面,但它仍然不起作用,
private void StackPanel_KeyUp_1(object sender, KeyEventArgs e)
{
NavigationService.Navigate(new Uri("/Page2.xaml", UriKind.Relative));
}
如何为行添加键控事件处理程序?我应该如何发送所选行的相应名称?
而不是 KeyUp,使用 Tap 事件,您的代码将正常工作。
XAML:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<ListBox x:Name="List" HorizontalAlignment="Left" Height="612" Margin="6,7,0,0" VerticalAlignment="Top" Width="443" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Width="400" Height="50" Tap="StackPanel_Tap">
<TextBlock x:Name="tbName" Width="200" Height="44" FontSize="22" FontWeight="Bold" Text="{Binding Name}"/>
<TextBlock x:Name="tbEmail" Width="200" Height="44" FontSize="22" Text="{Binding Email}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
处理程序:(此处 toDoItem 是 ListBox 显示的对象类型,AnyUniqueParam 是要传递的参数
private void StackPanel_Tap(object sender, KeyEventArgs e)
{
ListBox listBox = (ListBox)sender;
ToDoItem toDoItemToOpen = listBox.SelectedItem as ToDoItem;
NavigationService.Navigate(new Uri("/NewTaskPage.xaml?pagedetails=" + toDoItemToOpen.AnyUniqueParam, UriKind.Relative));
}