Monotouch-Dialog ReloadData不会重新加载数据?

时间:2011-02-18 12:55:39

标签: xamarin.ios monotouch.dialog

我想使用monotouch对话框作为某些数值不可编辑的数据显示。但是调用DialogViewController.ReloadData不会更新绑定对象中的数据。


class AccountFormModel
{
        [Section("Account data", "")]

        [Caption("Balance")]
        public string balance;
}
...
private void InitComponents()
{
            accountFormModel = new AccountFormModel();
            accountFormModel.balance = "TestTestTest";
            bc = new BindingContext(this, accountFormModel, "AccountData");
            dialogViewController = new DialogViewController(bc.Root);
            dialogViewController.Autorotate = true;
}

private void RefreshData()
{
            string b = SomeDatasource.Account.Balance.ToString("N4");
            accountFormModel.balance = "$" + b;
            dialogViewController.ReloadData();
}

调试显示,refreshData方法中的accountFormModel.balance设置为正确的值,但在模拟器中的表单上没有任何变化(保持TestTestTest)。我做错了什么?

1 个答案:

答案 0 :(得分:3)

DialogViewController在使用反射时最初会进行绑定,并且只有当你将FetchData()传回给你的类时才会这样做。

BindingContext基本上会根据您的数据创建模型(在这种情况下是平衡),此时有效地制作数据副本。当您调用ReloadData()时,这将从副本重新加载数据,这就是您没有看到更改的原因。虽然可以更改为在BindingContex上使用某些方法来重新填充数据,但目前情况并非如此。

MonoTouch.Dialog的Reflection API非常有限,我强烈建议您,对于任何非平凡的事情,您都使用Elements API。 MonoTouch.Dialog中的大多数示例都使用该API,因为它可以让您完全控制对话框。