将DataTemplate中的按钮绑定到表单的ViewModel中的命令。
将DataTemplate中的按钮绑定到表单的ViewModel中的命令。
我的问题类似于这个问题的描述:WPF MVVM中的按钮控件绑定在DataTemplate中
这是我的XAML代码:
它只是一个绑定到ViewModel中名为CommandSets的ObservableCollection
这个绑定是生效的(它为集合中的每个项目显示一个按钮)。
现在我想要将按钮绑定到一个在ViewModel中的命令(FireCommand)。
这是ViewModel的相关部分:
public class MainWindowViewModel : INotifyPropertyChanged { public ICommand FireCommand { get; set; } public ObservableCollectionCommandSets { get; set; } public MainWindowViewModel() { this.FireCommand = new RelayCommand(new Action
这个按钮的绑定不起作用。
从我了解到的上面链接的问题中,绑定不起作用的原因是:
(如果我理解错了,请纠正我)
- 按钮位于ListBox内部,所以它只“知道”ListBox的绑定(在这种情况下就是ObservableCollection),而不知道主窗口的绑定
- 我试图绑定到主窗口的主ViewModel中的一个命令(按钮不“知道”)
命令本身肯定是正确的,因为当我把按钮放在ListBox之外时(参见上面的XAML示例),绑定生效并且命令被执行。
显然,我“只需要”告诉按钮绑定到表单的主ViewModel。
但是我无法找到正确的XAML语法。
我尝试了一些在Google上找到的方法,但是它们都对我无效:
请问有人可以:
- 给我提供将按钮绑定到列表框内部的命令的正确XAML代码吗?命令在表单的MainViewModel中。
- 指向一个以WPF/MVVM初学者可以理解的方式来解释这些高级绑定的链接吗?
我感觉我只是在复制和粘贴奇怪的XAML咒语,到目前为止我没有任何线索(也找不到任何好的文档)如何找出在哪种情况下我需要使用RelativeSource或StaticResource或其他替代“正常”绑定。