如何在longlistselector使用的datatemplate中为控件设置事件

时间:2013-09-05 02:17:32

标签: c# xaml windows-phone-8 datatemplate longlistselector

我正在开发一款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.这可能吗?如果是这样,我应该如何实施呢?感谢

1 个答案:

答案 0 :(得分:1)

可以实现此行为。 您需要执行以下操作

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

现在当你点击图像时,它将首先调用ImageTapped事件(你需要在这里设置一个标志),然后它调用ListItemTapped事件(你可以检查是否设置了标志),然后相应地采取行动。不要忘记在ListItemTapped事件中重置标志。