首页 > 解决方案 > 如何处理 UWP、MVVM 的子列表中的 ItemClick 事件?

问题描述

我是 UWP 的新手。我有一个已经在这里问过的问题,

UWP:如何从视图模型中的另一个列表视图而不是代码隐藏中捕获列表视图部分的点击?

但是,没有一个解决方案真正起作用。我已经对它们进行了测试,“ElementName”找不到父 ListView 的名称。

在这里重述情景,

假设我有这个骨架。[用伪代码编写]

ViewModel{

   Collection< TypeT > CollectionParent{}
   RelayCommand_For_ChildList ChildItemClick; 
}

//TypeT is a model in here. 

TypeT{
    Collection<string> CollectionChild{}
}


<ListView Name="ParentListView" ItemSource="CollectionParent">

<ListView.ItemTemplate>
   <DataTemplate>
        <ListView Name="ChildListView" Command="{Binding ChildItemClick}" ItemSource="AnotherCollectionWithinTheFirstCollection">
</ListView>
   </DataTemplate>
</ListView.ItemTemplate>

</ListView>

当我运行此代码时,“Binding ChildItemClick”会尝试在 TypeT 中找到“ChildItemClick”,而不是 ViewModel。

我想在 ViewModel 中捕获此事件。我该怎么做,请建议。

感谢您的阅读。

标签: c#mvvmuwpuwp-xamluwp-navigation

解决方案


如果这仍然是一个问题,并且您对答案感兴趣,请点击此处。我想你在这里有很多选择。

  • 就像已经提到的那样,您可以使用行为 SDK,并且您必须命名 Child-ListView,因此您可以将 SelctionChanged-Event 绑定到命令

  • 您可以将所选项目绑定到类的元素,该元素提供列表并在 setter 方法中做出反应,但请记住您需要调用 NotifyPropertyChanged

这是两个简单的选项。


推荐阅读