使用IValueConverter绑定不起作用

时间:2015-07-03 19:55:20

标签: c# binding xamarin.forms ivalueconverter textcolor

我正在尝试从TextColor上的标签绑定ViewCell

Label myLabel = new Label { Text = "SomeText" };

myLabel.SetBinding(Label.TextColorProperty,
    new Binding("TheTextColor", BindingMode.TwoWay, new LabelTextColorConverter()));

这是转换器:

public class LabelTextColorConverter : IValueConverter
{
    public bool OldValue { get; set; }

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        OldValue = (bool) value;
        Debug.WriteLine("asdadasdsadsada");
        if ((bool)value)
            return Color.Red;
        else
            return Color.Silver;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        Debug.WriteLine("qwqweqewqeeqe");
        return OldValue;
    }
}

调试输出不会出现,颜色也不会改变。我没有看到任何错误。

1 个答案:

答案 0 :(得分:0)

为什么你需要双向绑定?我不认为这是必要的。

myLabel.SetBinding(Label.TextColorProperty, new Binding("TheTextColor", BindingMode.OneWay, new LabelTextColorConverter()));

然后:

public class LabelTextColorConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        bool val = (bool)value;

        if (val)
            return Color.Red;
        else
            return Color.Silver;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

......它应该可以正常工作。另外,请确保正确设置页面/控件的BindingContext。