我查看了这个网络和谷歌,解决方案对我不起作用。
我在 UserControl 的 ViewModel 上有一个命令。好吧,用户控件有一个绑定到 ObservableCollection 的 ItemsControl。在 ItemsControl.ItemTemplate 的 DataTemplate 中,我有一个按钮,我想使用该命令。我无法绑定命令,因为在 DataTemplate 内部,datacontext 不是 ViewModel,而是 ObservableCollection 的一个项目。
问题是:如果丢失了父数据上下文,如何将按钮绑定到命令?
我认为这需要一个简单的解决方案,因为我认为这是一个常见问题。
想象一下这个场景:
您有一个带有 observableCollection 作为 ItemsSource 的 ListBox 项,因此您在 ListBox 内为集合中的每个元素使用一个数据模板。好吧,您想删除选定的项目,并在该作业的每一行中放置一个按钮。你是怎样做的?
在 MVP 中,我可以在按钮的单击事件中执行此操作:
Button but = e.Source as Button;
if (but != null)
Presenter.ActualNote = but.DataContext as Note;
简而言之。您将行(所选项目)的数据上下文发送给演示者。
但是,我怎样才能以 mvvm 方式做到这一点?因为我需要使用命令,但我无法将命令分配给按钮,因为按钮对 ViewModel (命令所在的位置)一无所知。
如您所见,按钮必须存在于数据模板中,然后数据上下文不再是 ViewModel.... 这就是为什么我需要访问父级的 DataContext 才能访问命令的原因。
我希望你能更好地理解我的问题。
谢谢你。