如何在 (Xamarin.Forms) XAML 中使用 IValueConverter 转换一个完整的对象?

How can I convert a complete object with IValueConverter in (Xamarin.Forms) XAML?

我已经在 class X 中实现了 IValueConverter 的方法。

public class X : IValueConverter {
 public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
       ...
 }
 ...
}

在XAML我有<Label Text="{Binding A, Converter={StaticResource TextConverter}, ConverterParameter=X}" />

这很好用。 属性 A(来自 class Y 的实例)被传递到我的 class X 实例中的 Convert 方法。我可以转换。

public class Y {
 public string A { get; set; }
 public string B { get; set; }
}

现在我想将完整的对象传递给 Convert 方法。因此,如果我可以在我的转换方法中从 class Y 的实例访问 属性 A 和 B。

所以我将 XAML 代码更改为 <Label Text="{Binding ., Converter={StaticResource TextConverter}, ConverterParameter=X}" /> 但是它没有用。 Convert方法中的参数值始终为null。

如何传递完整的对象(来自类型 Y)?或者,如果不可能,我如何将多个 属性 传递给 Convert 方法?在 XAML.

你可以通过class Y,

Property

首先,您需要创建 class 的 属性,如下所示,

 public Y NewObject { get; set; }

然后你必须使用你的 NewObject 来绑定

<Label Text="{Binding NewObject, Converter={StaticResource TextConverter}, ConverterParameter=X}" />

现在在您的转换器中,您将能够使用 NewObject.

获取对象并获取 AB 属性