我应该在创建 Xamarin 对象的类的签名中使用 BindingBase 而不是 Binding 吗?

问题描述

我正在从我的 Xamarin 代码创建一个新对象,如下所示:

new ArrowGrid("Group Name",new Binding(nameof(_vm.Name))));

并像这样使用它:

public ArrowGrid(string text1,Binding text2,string tapCommandParam) : this()
{
   this.Text1 = text1;
   this.SetBinding(ArrowGrid.Text2Property,text2);
}

ReSharper 建议我更改为 BindingBase:

public ArrowGrid(string text1,BindingBase text2) : this()

谁能向我解释一下 Binding 和 BindingBase 之间的区别。是否有任何理由更改为 BindingBase?

解决方法

类似的你可以自己选择。

SetBinding 定义的 BindableObject 方法有一个 BindingBase 类型的参数,Binding 类从该参数派生。

以下示例显示如何通过 BindingBase 设置对属性的绑定。

var label = new Label ();
label.SetBinding (Label.TextProperty,new Binding ("Name"));

还有其他由 BindableObjectExtensions 类定义的 SetBinding 方法。它创建并将绑定应用到属性。

下面的例子展示了如何使用扩展方法来设置绑定。这是来自此类的更简单的 SetBinding 扩展方法。

var label = new Label ();
label.SetBinding (Label.TextProperty,"Name");