PlaceholderProperty绑定

时间:2015-10-28 11:55:55

标签: mvvmcross xamarin.forms

我有一个视图,有两个基本字段,名为ID和Name,这些字段的TextProperty绑定到我的ViewModel,使用StudentID.SetBinding(Entry.TextProperty, new Binding("StudentID"));

学生ID是int。在视图中,我为这些字段制作了占位符。但是,对于int字段,它们默认设置为0.因此,当页面加载时,int字段的占位符始终为0.

如何绑定PlaceholderProperty字段的int?我正在使用MVVMCross和Xamarin.Forms。

注意:我使用C#而不是XAML代码用于我的View定义。

1 个答案:

答案 0 :(得分:0)

将绑定更改为

StudentID.SetBinding(Entry.TextProperty, new Binding(path: "StudentID", converter: new IntToStringConverter()));

并创建转换器

public class IntToStringConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return ((int)value) == 0) ? null : ((int)value);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        int retVal;
        if(!(Int.TryParse((string)value, retVal)) retVal = 0;
        return retVal;
    }
}

这样,如果int为0,则该值将作为null传递,但任何其他值都将正确传递。当条目的文本值为null时,将显示占位符文本,因此您可以只执行StudentID.Placeholder = "Enter student ID";,直到输入数字为止。转换器中的字符串验证非常基础,绝对可以改进。