我在Windows通用应用程序中有一个ListView,描述如下:
ListView ItemsSource="{Binding RecentlyAddedTvSeriesEpisodes}"
IsItemClickEnabled="True" SelectionMode="Single"
x:Name="listOfThings">
<!--Behaviour for item click-->
<i:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="ItemClick">
<core:InvokeCommandAction Command="{Binding VideoItemClickCommand}"
CommandParameter="{Binding ElementName=listOfThings, Path=SelectedItem}"/>
</core:EventTriggerBehavior>
</i:Interaction.Behaviors>
<!--ListView template for all items-->
<ListView.ItemTemplate>
<DataTemplate>
...
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
如果单击某个项目,则其行为是调用中继命令并将ListView的
CommandParameter
属性作为SelectedItem
传递。如果ListView中未选择任何项目,则它将传递
ItemClickEventArgs
对象。由此,我可以轻松获得被点击的项目:private async void ExecuteItemClickCommand(ItemClickEventArgs parameter)
{
//Get the clicked item
Model.VideoModel selectedVideo = parameter.ClickedItem as VideoModel;
}
如果在ListView中选择了一个项目,即使我单击其他项目而不是选定的项目,它也会将
SelectedItem
属性(直接是模型)传递给RelayCommand。 我想找出如何获取
ClikedItem
的 ListView
,而不管ListView
中的所选项目如何
最佳答案
我不确定如何通过行为来解决问题,但是如何简单地在后面的代码中处理事件并从那里调用命令呢?您可能会保存3行代码和几kB的二进制大小...
关于listview - 从ListView获取ClickedItem(使用MVVM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30082820/