gpt4 book ai didi

c# - Xamarin.Forms 和 ElementName 的绑定(bind)

转载 作者:太空宇宙 更新时间:2023-11-03 15:38:57 25 4
gpt4 key购买 nike

我正在尝试将我的 ListView 项绑定(bind)到来自父 ViewModel 的命令。问题是我想在当前项目中添加 CommandParameter

基本上,在 WPF 中我会做类似的事情

<MyItem Command="{Binding ElementName=parent", Path=DataContext.MyCommand}" CommandParameter="{Binding}"/>

在 Xamarin Forms 中,ElementName 不起作用,所以方法是使用 BindingContext,但我应该如何使用它(如果我的绑定(bind)点之一指向父对象,第二个绑定(bind)点指向自身)?

我试过了

<MyItem Command="{Binding BindingContext.RemoveCommand, Source={x:Reference parent}}" CommandParameter="{Binding }" />

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

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

我该怎么做?

最佳答案

我了解到您想在当前节点的父节点上执行命令,但将当前节点作为参数传递。如果是这样的话,你可以这样解决:

这是我们绑定(bind)的模型。它有一个 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; }
}

在后面的代码中,设置了绑定(bind)上下文:

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"/>

关于c# - Xamarin.Forms 和 ElementName 的绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30886486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com