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
設定されます。true
TestConnection
これを (iOS シミュレーターで) 実行してダイアログを開くと、[テスト] ボタンが表示され、[追加] ボタンが非表示になります (意図したとおり)。ボタンをクリックしてテストが成功すると、[追加] ボタンは表示されませんが、代わりにアプリケーション出力に次のメッセージが表示されます。
どうしてこうなった - CurrentAttachedCell は非 UITableView の子です
Visible バインディングが機能しないのはなぜですか?
私が知る限り、コードのこの失敗につながるコードのカスタマイズを上流で行っていません (ただし、何かが欠けている可能性があります)。
CanAddConnection
たとえば、別の要素プロパティにバインドするとCaption
、ビューでブール値が適切に更新されます。