1

Mac 上の Xamarin Studio プロジェクトでは、MvvmCross-Binariesの MvvmCross バージョン 3.0.13 、XS-iOS-Mac リリースアセンブリを使用しており、CrossUI DialogベースのViewを対応するViewModelと結合しようとしています。具体的にRootは、ダイアログ ビューで次のように定義します。

var bindings = this.CreateInlineBindingTarget<ViewModel>();
Root = new RootElement("New Connection") {
  new Section {
    new StringElement("Test")
      .Bind(bindings, element => (object)element.SelectedCommand, vm => vm.TestConnection)
  },
  new Section {
    new StringElement ("Add")
      .Bind (bindings, element => element.Visible, vm => vm.CanAddConnection)
      .Bind (bindings, element => (object)element.SelectedCommand, vm => vm.AddConnection)
  }
};

ViewModelでは、テストが成功した場合にコマンドによって にCanAddConnection設定されます。trueTestConnection

これを (iOS シミュレーターで) 実行してダイアログを開くと、[テスト] ボタンが表示され、[追加] ボタンが非表示になります (意図したとおり)。ボタンをクリックしてテストが成功すると、[追加] ボタンは表示されませんが、代わりにアプリケーション出力に次のメッセージが表示されます。

どうしてこうなった - CurrentAttachedCell は非 UITableView の子です

Visible バインディングが機能しないのはなぜですか?


私が知る限り、コードのこの失敗につながるコードのカスタマイズを上流で行っていません (ただし、何かが欠けている可能性があります)。

CanAddConnectionたとえば、別の要素プロパティにバインドするとCaption、ビューでブール値が適切に更新されます。

4

1 に答える 1

1

おそらくhttps://github.com/MvvmCross/MvvmCross/issues/467の一部として対処されているios7の変更に違反していると思います

この修正は 3.0.14 に含まれる予定です (できれば来週中に)。それまでの間、最も簡単な回避策は、おそらくUpdateVisibility自分のビルドにパッチを適用するか、カスタム StringElement を実装することです。

于 2013-10-28T14:16:40.460 に答える