我在WPF应用程序中使用MV-VM模式.我将ViewModel绑定到ContentControl并使用窗口资源中定义的数据模板来呈现该ViewModel的视图(UserControl).
在ViewModel中,我有一组项目.我将该集合绑定到WPF工具包中提供的数据网格.同样在视图模型中,我定义了一个RemoveItem命令,该命令接受要删除的项ID的参数.
如何在数据网格中绑定该命令?网格的数据上下文就是那个集合,所以类似于:
不起作用 - 它找不到命令.我想我需要做RelativeSource绑定,但那会是什么样子?Ancestor类型是UserControl还是ContentControl?我的ViewModel作为DataContext驻留在哪里?
还是我离开这里?
是的,你只需要升级一级.我会尝试ElementName
先绑定并RelativeSource
仅在必要时使用.例如,我更喜欢这个:
... ...
也就是说,当涉及到元素名称和控件的作用域时,XAML编译器可以得到一个结,所以你可能需要诉诸RelativeSource
:
... ...
您只需要搜索,直到数据上下文成为您的视图模型.UserControl
如果你愿意,你可以搜索一个- 不确定它真的很重要.两者都是非常脆弱的绑定,这就是我更喜欢这种ElementName
方法的原因.