我试图将我的ListView项目从我的父ViewModel绑定到Command。问题是我想添加CommandParameter和当前Item
基本上,在WPF中我会做类似
的事情<MyItem Command="{Binding ElementName=parent", Path=DataContext.MyCommand}" CommandParameter="{Binding}"/>
在Xamarin Forms中,ElementName不起作用,所以方法是使用BindingContext,但我应该如何使用它(如果我的一个绑定指向父级,第二个指向自己)?
我试过了
<MyItem Command="{Binding BindingContext.RemoveCommand, Source={x:Reference parent}}" CommandParameter="{Binding }" />
但它不起作用(似乎它没有改变Source)。
我知道,使用普通绑定的方法是使用BindingContext="{x:Reference parent}"
,但是在这个示例中它不起作用,因为我需要Self
绑定CommandParameter
我该怎么做?
答案 0 :(得分:0)
我知道你想在当前节点的父节点上执行命令,但是将当前节点作为参数传递。如果是这种情况,您可以这样解决:
这是我们绑定的模型。它有std::vector<std::reference_wrapper<card>>
属性,它定义了Parent
(请注意,所有都是C#6代码,所以你需要XS或VS2015!):
ICommand
在后面的代码中,绑定上下文设置为:
public class BindingClass
{
public BindingClass (string title)
{
this.TestCommand = new TestCommandImpl (this);
this.Title = title;
}
public string Title { get; }
public ICommand TestCommand { get; }
public BindingClass Parent { get; set; }
}
在XAML中,我们有一个按钮,它调用父节点的命令并将当前节点作为参数传递:
this.BindingContext = new BindingClass ("Bound Button") {
Parent = new BindingClass ("Parent")
};