我正在使用MvvmCross 4并尝试绑定到axml中的ListView
元素的backgroundColor。现在的问题是颜色取决于我的模型中的2个属性:bool IsSpecialCategory
和bool IsNsfw
- 每个组合应该得到另一种颜色。
在iOS中,使用流畅的语法,在转换器中使用整个模型没有问题,但这在Android中使用axml是否可行?最简单的解决方案是在项目布局中为转换器提供整个模型,而不仅仅是属性:
<LinearLayout [...]
local:MvxBind="backgroundColor ItemBackgroundColorConverter(theWholeModelNotJustAProperty)">
答案 0 :(得分:1)
有两种可能的语法来绑定整个上下文。一个是省略财产,另一个是使用期间:
local:MvxBind="backgroundColor ItemBackgroundColorConverter(.)"
local:MvxBind="backgroundColor ItemBackgroundColorConverter()"
请注意,这适用于没有转换器的绑定
答案 1 :(得分:1)
当您可以传递额外参数时,无需将整个视图模型传递给转换器。 :)
local:MvxBind="BackgroundColor PlayerBackgroundColor(RowItem.RowId, PlayerListType)
和转换器:
public class PlayerBackgroundColorValueConverter : MvxColorValueConverter
{
protected override MvxColor Convert(object value, object parameter, System.Globalization.CultureInfo culture)
{
var playerListType = (PlayerListType)parameter;
if (parameter != null && playerListType == PlayerListType.AllPlayers)
return BusinessConstants.Top10BGColor;
if ((int)value <= 10)
return BusinessConstants.Top10BGColor;
else
return BusinessConstants.MyPlayersBGColor;
}
}