1

我有一个包含项目列表的列表框,我想要的是当我单击特定项目时,我想导航到另一个页面并将该特定项目的名称发送到导航页面。

我的xml代码:

 <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 事件处理程序?我应该如何发送所选行的相应名称?

4

1 回答 1

2

而不是 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>

Handler:(这里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));
}
于 2013-10-23T06:36:26.347 回答