我有一个视图,有两个基本字段,名为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定义。
答案 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";
,直到输入数字为止。转换器中的字符串验证非常基础,绝对可以改进。