gpt4 book ai didi

xamarin.ios - Monotouch-Dialog ReloadData 不重新加载数据?

转载 作者:行者123 更新时间:2023-12-04 06:34:03 26 4
gpt4 key购买 nike

我想使用单点触控对话框作为某些数值的不可编辑数据显示。但是调用 DialogViewController.ReloadData 不会更新绑定(bind)对象的数据。


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)。我做错了什么?

最佳答案

DialogViewController 在使用反射时最初会绑定(bind)一次,并且只有在您 FetchData() 时才会将数据传输回您的类。

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

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

关于xamarin.ios - Monotouch-Dialog ReloadData 不重新加载数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5041521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com