我在Xamarin.Forms的PCL项目中有一个自定义视图。我无法将Xaml中的颜色集合绑定到CustomView中的可绑定对象。
我在xaml中设置了如下所示的绑定:
<local:CustomView x:Name="customView" ColorPalette="{Binding Colors}"/>
我的自定义视图如下:
public class CustomView : View
{
public CustomView()
{
}
public static void OnColorsChanged(BindableObject bindable, object oldValue, object newValue)
{
// Some Code
}
public static readonly BindableProperty ColorsPaletteProperty =
BindableProperty.Create("ColorPalette", typeof(IEnumerable<Color>), typeof(CustomView), new List<Color>(){ Color.FromRgb(0, 0, 0),
Color.FromRgb(251, 176, 59)}, BindingMode.Default, null, OnColorsChanged);
public IEnumerable<Color> ColorPalette
{
get { return (IEnumerable<Color>)GetValue(ColorsPaletteProperty); }
set { SetValue(ColorsPaletteProperty, value); }
}
}
在Xaml中执行绑定时,我得到一个异常“System.ArgumentException:'Xamarin.Forms.Binding'类型的对象'无法转换为'Xamarin.Forms.Color'类型。”
但是当我在代码中使用SetBinding绑定Colors时它正常工作。
代码背后:
//Binding using SetBinding is working where as {Binding Colors} in xaml is not working
customView.SetBinding<ViewModel>(CustomView.ColorsPaletteProperty, vm => vm.Colors);
Colors是IEnumerable / IList / List / ObservableCollection类型的颜色集合。
感谢任何帮助。
此致
尼蒂什
答案 0 :(得分:0)
嵌入在另一个视图中的自定义视图将继承父视图的绑定上下文。您是否将视图的绑定上下文设置为具有Colors属性的viewmodel?您在其中设置绑定上下文和viewmodel的更多代码示例可能会有所帮助。
答案 1 :(得分:0)
您的属性名称是ColorPalette,但您的可绑定属性名称未遵循标准,它应该像“ColorPaletteProperty”而不是“ColorsPaletteProperty”您在“颜色”中添加了“s”,这是错误的。你可以删除它并检查吗?它应该工作,让我知道这是否有帮助。
谢谢, 迈克尔