0

我有一个LongListBoxItem的样式,每个item都有图片和描述。因此,应该调用不同的事件,具体取决于所触摸的对象(pic 或 desc)。我正在使用 Mvvmlight。

问题是我完全迷失在事件案例和事件参数中。我正在尝试不同的事件:


点击事件 + PassEventArgsToCommand = 返回 GestureEventArgs,不确定我是否能够从那里提取项目 ID

SelectedItem 事件 + PassEventArgsToCommand = 返回 SelectionChangedEventArgs,但从不触发(可能是因为事件不是从列表框项目上升,而是从其子项边界上升)

点击事件 + CommandParameter="{Binding SelectedItem, ElementName=ProductCategoriesListBox}" = 无法从样式中找到 Elementname,因为我要多次使用它

SelectedItem 事件 + CommandParameter="{Binding SelectedItem, ElementName=ProductCategoriesListBox}" = 好吧,同样的事情


也许我的任务有更好的方法?

4

1 回答 1

0

好的,所以 TemplatedParent 在这种情况下是最重要的(第 5 行)。

    <interactivity:Interaction.Triggers>
        <interactivity:EventTrigger EventName="Tap">
            <command:EventToCommand 
                Command="{Binding Source={StaticResource ViewModelLocator}, Path=NavigationViewModel.OnTapItemCommand, Mode=OneWay}"
                CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=DataContext}"/>
        </interactivity:EventTrigger>
    </interactivity:Interaction.Triggers>

现在可以从样式中访问列表框项目。

于 2013-05-05T09:14:28.980 回答