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
绑定
我该怎么做?
我知道您想在当前节点的父节点上执行命令,但将当前节点作为参数传递。如果是这种情况,您可以像这样解决它:
这是我们绑定到的模型。它有一个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"/>