我有一个LongListBoxItem样式,每个项目都有图片和描述。因此,应该调用不同的事件,取决于触摸的对象(pic或desc)。我正在使用Mvvmlight。
问题是我在事件案例和事件参数中完全迷失了。我正在尝试不同的活动:
点击事件+ PassEventArgsToCommand =返回GestureEventArgs,不确定我是否能够从那里提取项目ID
SelectedItem事件+ PassEventArgsToCommand =返回SelectionChangedEventArgs,但从不触发(可能是因为事件不是从列表框项目上升,而是从它的childern,border)上升
点击事件+ CommandParameter =“{Binding SelectedItem,ElementName = ProductCategoriesListBox}”=无法从样式中找到Elementname,因为我将多次使用它
SelectedItem事件+ CommandParameter =“{Binding SelectedItem,ElementName = ProductCategoriesListBox}”=嗯,同样的事情
也许我的任务有更好的方法?
答案 0 :(得分: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>
现在可以从样式中访问列表框项目了。