如何在长列表选择器使用的数据模板中为控件设置事件

本文关键字:控件 事件 设置 数据 列表 选择器 | 更新日期: 2023-09-27 18:30:10

我正在开发一个windows phone 8应用程序,当我点击长列表选择器中的项目时,我在处理事件时遇到了问题。

所以我有了这个数据模板:

<DataTemplate x:Key="InfoDataTemplate">
    <Grid Margin="12,0,12,0" Width="auto">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Image x:Name="UserAvatar" Margin="0,12,0,0" Grid.Row="0" Grid.Column="0" Grid.RowSpan="3" Source="{Binding user.avatar_url}" VerticalAlignment="Top"/>
        <TextBlock x:Name="Username" Margin="12,0,0,0" Text="{Binding user.username}" Grid.Row="0" Grid.Column="1" FontSize="24" FontWeight="Bold"/>

我把这个数据模板作为app.xaml的一部分,因为我在不同的页面中重复使用它。

我在一个页面(page1.xaml)的长列表选择器中使用这个数据模板:

<phone:LongListSelector x:Name="UserList" ItemTemplate="{StaticResource InfoDataTemplate}" SelectionChanged="List_SelectionChanged" ItemRealized="List_ItemRealized">                        

预期的行为是,当我点击模板中的图像时,我会导航到页面A,当我在数据模板中的其他位置点击时,我将导航到页面B。这可能吗?如果是,我应该如何实施?感谢

如何在长列表选择器使用的数据模板中为控件设置事件

实现这种行为是可能的。你需要做以下

  • 为Image添加点击事件,例如ImageTapped
  • 为LonglistSelector ListItemTapped添加点击事件

现在,当您单击图像时,它将首先调用ImageTapped事件(您需要在此处设置标志),然后调用ListItemTapped活动(您可以检查是否设置了标志),并相应地采取行动。不要忘记重置ListItemTapped事件中的标志。