1

この問題の完全なソースはここにあります:https ://github.com/Cheesebaron/MvvmCross.SettingsSample

私の主な関心事は、いくつかの単純なBooleanElementsをバインドしようとするSettingsViewにあります。

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で正常に機能しているように見えるので、ビューモデルは問題ないことがわかります。しかし、双方向バインディングのコードが欠落しているか、フレームワークに何かが間違っているか欠落しています。

CheckboxElementこの問題は、またはなどの他のタイプの要素を試してみた場合にも発生しStyledStringElementます。また、私自身が作った要素...

4

1 に答える 1

1

上記のコメントに続いて、これはいくつかの別個の問題であるように感じます:

  • BooleanElementがMvxTouchDialogBindingSetup.csに正しくリンクされていませんでした-うまくいけばこれを修正しました-このコミットを参照してください-https ://github.com/slodge/MvvmCross/commit/38e5f08acaffa6ac76d060d104f841f2765d234c-テストプロジェクトでテストしました

  • StyledStringElementは、強制的に再描画するために単に「キック」が必要な場合があります。そのため、呼び出す必要がある場合があります。また、現時点では、これに関するテストケースはありませんcell.SetNeedsDisplay()cell.Backbground.SetNeedsDisplay()

  • Setup.csの新しいバインディングエントリを使用して、新しいセルをリンクする必要がある場合があります

これらの問題を報告していただきありがとうございます。また、テストケースをフォローアップしていただきありがとうございます。mvxリポジトリ内にいくつかのより正式なテストケースを含める方法を考え出すことができるかどうかを確認します。


Value将来の作業項目として、 andの関係も形式化したいとValueChanged思います-ValueとValueChangedを持つすべての要素がデータバインディングをサポートするように一般的なルールを提供できると思います-問題として追加されましたhttps://github.com/slodge / MvvmCross / issues/26

于 2012-09-03T21:48:54.230 に答える