Xamarin.Forms和ElementName的绑定

时间:2015-06-17 08:41:44

标签: c# wpf xamarin.ios xamarin.forms

我试图将我的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

我该怎么做?

1 个答案:

答案 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")
};