【问题标题】:MvvmCross: TwoWay bindings with MonoTouch.DialogMvvmCross:与 MonoTouch.Dialog 的双向绑定
【发布时间】:2012-09-03 14:26:41
【问题描述】:

此问题的完整来源可以在这里找到:https://github.com/Cheesebaron/MvvmCross.SettingsSample

我主要关心的是 SettingsView,我尝试在其中绑定一些简单的 BooleanElements:

this.Root = new RootElement("Settings")
            {
                new Section("Test", string.Format("Choose to see your own location on the map.{0}Choose to allow shake gestures.{0}Choose whether you want to receive notifications.", Environment.NewLine))
                {
                    new BooleanElement("Show my location", ViewModel.ShowMyLocation).Bind(this, "{'Value':{'Path':'ShowMyLocation','Mode':'TwoWay'}}"),
                    new BooleanElement("Shake gestures", ViewModel.ShakeGestures).Bind(this, "{'Value':{'Path':'ShakeGestures','Mode':'TwoWay'}}"),
                    new BooleanElement("Notifications", ViewModel.Notifications).Bind(this, "{'Value':{'Path':'Notifications','Mode':'TwoWay'}}"),
                },
            };

我的问题在于绑定似乎只能以一种方式工作,即使我明确指定它是TwoWay。这两种方式绑定似乎在 WP7 和 Android 上运行良好,所以我知道视图模型没问题。但是要么我缺少一些用于双向绑定的代码,要么框架中有错误或缺失。

如果我尝试使用 CheckboxElementStyledStringElement 等其他类型的元素,也会出现此问题。还有我自己制作的元素...

【问题讨论】:

  • 感谢您的样品。对于布尔示例,我猜这一定是一个错误。可能是我在github.com/slodge/MvvmCross/blob/master/Cirrious/… 中包含了错误的类——也许 CheckboxElement 需要是 BaseBooleanElement。对于 StyledStringElement,我不确定 - 我真的不明白如何使 StyledStringElement 可编辑?今晚我回到 Mac 前,我会试着看看。
  • 啊,等一下。 StyledStringElement 有效,但就像视图不会自行更新。因此,如果您点击单元格,它会更新。因此,由于某种原因,单元格没有收到更改通知。 (另一个问题?)
  • 仍然在看这个(更新 XCode 和 Monotouch 和......),但使用 StyledStringElement 我想知道需要使用 cell.SetNeedsDisplay 强制重绘(也许还有 cell.Backbground.SetNeedsDisplay? )。更新完成后会查看这个。
  • 如果您需要我测试一些东西,我会在星期四回到 Mac 电脑前。但我认为你调用 SetNeedsDisplay 是对的。 MonoTouch.Dialog 似乎并非旨在从其背后的代码更改视图中包含的值,并且当屏幕上出现强制重绘的触摸时效果会更好。
  • 再次感谢 - 我已经推送了一些代码并针对您的示例应用程序进行了测试。布尔值现在似乎是双向更新的。 StyledStringElement 仍然没有任何进展 - 明天晚上将尝试启动并运行一个测试项目来看看这个!

标签: xamarin.ios monotouch.dialog mvvmcross


【解决方案1】:

按照上面的cmets,感觉这是几个单独的问题:

感谢您报告这些问题 - 并跟进测试用例。我会看看我是否能弄清楚如何在 mvx 存储库中包含一些更正式的测试用例。


作为未来的工作项目,我也很想正式确定 ValueValueChanged 关系 - 我认为可以提供一个通用规则,以便所有具有 Value 和 ValueChanged 的​​元素都支持数据绑定 - 作为问题添加https://github.com/slodge/MvvmCross/issues/26.

【讨论】:

    猜你喜欢
    • 2014-07-04
    • 2013-08-25
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 2016-02-10
    • 2012-07-10
    • 1970-01-01
    相关资源
    最近更新 更多