System.FormatException in MVVMCross
本文关键字:MVVMCross in FormatException System | 更新日期: 2024-10-21 00:54:03
以下代码通过mvvmcross消息传递协议动态更新属性。
我现在面临的问题是,当用户清除age
或category
文本视图时,我会得到系统格式异常,我想当textview
为空时,它不会将其解析为数字?
System.FormatException:输入字符串的格式不正确。
MainViewModel
private readonly IMvxMessenger _messenger;
private readonly MvxSubscriptionToken _token;
public MainViewModel(IMvxMessenger messenger) {
_messenger = messenger;
_token = messenger.Subscribe<SelectedItemMessage>(OnMessageReceived);;
}
private void OnMessageReceived(SelectedItemMessage obj)
{
Age = obj.Age;
Category= obj.Category;
}
DetailViewModel
private readonly IMvxMessenger _messenger;
public DetailViewModel(IMvxMessenger messenger) {
_messenger = messenger;
}
public void UpdateMethod() {
var message = new SelectedItemMessage(this, age, category);
_messenger.Publish(message, typeof(SelectedItemMessage));
}
SelectedItemMessage
public SelectedItemMessage(object sender, double age, int category) : base(sender)
{
Age = age;
Category = category;
}
public double Age { get; set; }
public int Category{ get; set; }
}
您需要一个将空字符串转换为null的值转换器,并且需要使Age
属性可以为null。之后,您需要在绑定中指定转换后的:
public class NullableValueConverter : MvxValueConverter
{
public override object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value;
}
public override object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null || string.IsNullOrEmpty(value.ToString()))
{
return null;
}
return value;
}
}
在你的视野内:
local:MvxBind="Text Age,Converter=Nullable;"
您可以在value converters Wiki 上阅读更多关于value converters的信息