如何在 (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
.
获取对象并获取 A
和 B
属性
我已经在 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
.
A
和 B
属性