1

アイテムのリストを含むリストボックスがあり、特定のアイテムをクリックすると、別のページに移動し、その特定のアイテムの名前を移動したページに送信したいと考えています。

私の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));
    }

行のキーアップ イベント ハンドラーを追加するにはどうすればよいですか? そして、選択した行の対応する名前をどのように送信すればよいですか?

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 に答える