Csharp/C#教程:如何将Xamarin.Forms条目绑定到非字符串类型,例如Decimal分享


如何将Xamarin.Forms条目绑定到非字符串类型,例如Decimal

我创建了Entry,我试图将它绑定到Decimal属性,如下所示:

var downPayment = new Entry () { HorizontalOptions = LayoutOptions.FillAndExpand, Placeholder = "Down Payment", Keyboard = Keyboard.Numeric }; downPayment.SetBinding (Entry.TextProperty, "DownPayment"); 

当我尝试在模拟器上输入Entry时,我收到以下错误。

对象类型System.String无法转换为目标类型:System.Decimal

在撰写本文时,绑定时没有内置转换(但这是有效的),因此绑定系统不知道如何将您的DownPayment字段(小数)转换为Entry.Text (一个字符串) )。

如果OneWay绑定符合您的预期,字符串转换器将完成这项工作。 这适用于Label

 downPayment.SetBinding (Entry.TextProperty, new Binding ("DownPayment", stringFormat: "{0}")); 

对于Entry ,您希望绑定在两个方向都有效,因此您需要一个转换器:

 public class DecimalConverter : IValueConverter { public object Convert (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value is decimal) return value.ToString (); return value; } public object ConvertBack (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { decimal dec; if (decimal.TryParse (value as string, out dec)) return dec; return value; } } 

现在,您可以在绑定中使用该转换器的实例:

 downPayment.SetBinding (Entry.TextProperty, new Binding ("DownPayment", converter: new DecimalConverter())); 

注意:

OP的代码应该在1.2.1及更高版本中开箱即用(来自Stephane对该问题的评论)。 对于低于1.2.1的版本,这是一种解决方法

上述就是C#学习教程:如何将Xamarin.Forms条目绑定到非字符串类型,例如Decimal分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1026750.html

(0)
上一篇 2022年1月9日
下一篇 2022年1月9日

精彩推荐