我正在尝试将我的 CardView 的背景颜色绑定(bind)到我的 View 模型,但是我从 Mvx 返回了这个错误:
MvxBind:Warning: 11.66 Failed to create target binding for binding CardBackgroundColor
我不确定我是否在 AXML 或 View 模型中使用了错误的属性绑定(bind)。
这是我试图在 View 模型中将其绑定(bind)到的属性:
public int EventEntryBackgroundColour
{
get
{
return IsRead
? Resource.Color.yellow
: Resource.Color.White;
}
}
我也试过将它用作字符串类型以返回 HEX 中的颜色,但它仍然不起作用。
这是属性,我在 CardView 上设置
cardview:MvxBind="CardBackgroundColor EventEntryBackgroundColour"
如有任何帮助,我们将不胜感激。
最佳答案
我遇到了同样的问题。我的解决方案...
转换器:
public class MessageStatusToColorDrawableConverter : MvxValueConverter<bool, ColorDrawable>
{
protected override ColorDrawable Convert(bool value, Type targetType, object parameter, CultureInfo cultureInfo)
{
var context = Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity; // To get the context of the activity
return value ? new ColorDrawable(new Color(ContextCompat.GetColor(context, Resource.Color.Pink))) : new ColorDrawable(new Color(ContextCompat.GetColor(context, Resource.Color.Green)));
}
}
XML:
<RelativeLayout
android:id="@+id/relay_archive"
android:layout_width="10dp"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:paddingLeft="10dp"
android:paddingRight="10dp"
local:MvxBind="Background MessageStatusToColorDrawable(Status)">
我们不能将 Android.Graphics.Color
属性绑定(bind)到 local:MvxBind="BackgroundColor...
因为 BackgroundColor
属性希望您使用使用 MvxColor
的 NativeColor
转换器。
但是,local:MvxBind="Background...
属性需要一个可绘制对象,因此我使用绑定(bind)一个 ColorDrawable
。
关于c# - 通过 MvvmCross View 模型更改 CardView 背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33685742/