我正在尝试将我的CardView的背景颜色绑定到我的视图模型,但是我从Mvx那里得到了这个错误:
MvxBind:警告:11.66无法为绑定创建目标绑定 CardBackgroundColor
我不确定我是否在AXML或视图模型中使用了错误的属性绑定。
以下是我试图将其绑定到视图模型中的属性:
public int EventEntryBackgroundColour
{
get
{
return IsRead
? Resource.Color.yellow
: Resource.Color.White;
}
}
我也尝试使用它作为字符串类型来返回 HEX 中的颜色,但它仍然不起作用。
这是属性,我在CardView上设置
cardview:MvxBind="CardBackgroundColor EventEntryBackgroundColour"
非常感谢任何帮助。
答案 0 :(得分:2)
我遇到了同样的问题。我的解决方案......
<强>转换器:强>
Android.Graphics.Color
<强> XML:强>
local:MvxBind="BackgroundColor...
我们无法将BackgroundColor
属性绑定到NativeColor
,因为MvxColor
属性要求您使用使用local:MvxBind="Background...
的{{1}}转换器。
但是,ColorDrawable
属性需要drawable,因此我使用绑定var userDate = moment().set({ 'year': oTextY.innerHTML, 'month': oTextMi.innerHTML + 1, 'day': oTextDi.innerHTML });
。
答案 1 :(得分:0)
您需要查看MvvmCross的值转换器:https://github.com/MvvmCross/MvvmCross/wiki/Value-Converters#the-mvx-color-valueconverters
使用它们可以设置这样的颜色:
local:MvxBind="BackgroundColor NativeColor(CurrentColor)"
或者对于iOS:
set.Bind(field)
.For(field => field.BackgroundColor)
.To(vm => vm.CurrentColor)
.WithConversion("NativeColor");
和Windows:
Fill="{Binding CurrentColor, Converter={StaticResource NativeColor}}"
答案 2 :(得分:0)
我刚刚为我的cardview定义了一个子类,它有一个自己的属性,因为你似乎无法直接访问它,否则我似乎找不到绑定了吗?
public class BindableColorCardView: CardView
{
private Color m_cCardViewColor;
public Color CardViewColor
{
get { return m_cCardViewColor; }
set
{
m_cCardViewColor = value;
SetCardBackgroundColor(m_cCardViewColor);
}
}
然后只使用带有ValueConverter的binded属性。
答案 3 :(得分:0)
我知道这是很久以前问过的,但也许可以帮助到别人。
现在的答案是,您需要使用 CardViewBackgroundColor 而不是 CardBackgroundColor 。
因此,您的情况应该是:
cardview:MvxBind="CardViewBackgroundColor EventEntryBackgroundColour"
您应该将其绑定到Android.Graphics.Color,但不是整数。 为此,您可以创建一个如下所示的转换器类:
public class BackgroundColorConverter : MvxValueConverter<bool, Color>
{
protected override Color Convert(bool value, Type targetType, object parameter, CultureInfo culture)
{
return value ? Color.Black : Color.White;
}
}
您也可以从xaml调用此转换器,并从ViewModel传递布尔值以显示正确的颜色。示例:
cardview:MvxBind="CardViewBackgroundColor BackgroundColor(Selected)"