簡體   English   中英

MVVMCross中的System.FormatException

[英]System.FormatException in MVVMCross

以下代碼通過mvvmcross消息傳遞協議即時更新屬性。

我現在面臨的問題是,當用戶清除agecategory文本視圖時,然后出現系統格式異常,我textview空時,它不會將其解析為數字嗎?

System.FormatException:輸入字符串的格式不正確。

主視圖模型

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屬性為可空。 之后,您將需要在綁定中指定轉換后的內容:

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上閱讀有關價值轉換器的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM