Xamarin.Forms 和 ElementName 的绑定

本文关键字:绑定 ElementName Forms Xamarin | 更新日期: 2023-09-27 17:56:46

我正在尝试将我的列表视图项绑定到父视图模型的命令。问题是我想在当前项目中添加命令参数

基本上,在 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 }" />

但它不起作用(似乎它没有改变源)。

我知道,使用正常绑定的一种方法是使用 BindingContext="{x:Reference parent}" ,但它在本例中不起作用,因为我需要 CommandParameter Self绑定

我该怎么做?

Xamarin.Forms 和 ElementName 的绑定

我知道您想在当前节点的父节点上执行命令,但将当前节点作为参数传递。如果是这种情况,您可以像这样解决它:

这是我们绑定到的模型。它有一个Parent属性,它定义了一个ICommand(请注意,所有代码都是C#6代码,所以你需要XS或VS2015!

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; }
}

在代码隐藏中,设置了绑定上下文:

this.BindingContext = new BindingClass ("Bound Button") {
    Parent = new BindingClass ("Parent")
};

在 XAML 中,我们有一个按钮,用于调用父节点的命令并将当前节点作为参数传递:

<Button
    x:Name="btnTest"
    Text="{Binding Title}"
    Command="{Binding Parent.TestCommand}"
    CommandParameter="{Binding}"
    VerticalOptions="CenterAndExpand"
    HorizontalOptions="CenterAndExpand"/>