こんにちはXamarin/MvvmCross開発者、MvvmCrossバインディングの変更
これは好奇心からの単なる質問です。私が開発しているアプリケーションの1つで、いくつかの動作が変更されました。具体的には、UISwitchの "On"値をViewModelのブール値にバインドするときに、iOS上で実行されます。バインディングが適用されたときにプロパティのgetterが起動され、スイッチが反転されたときにsetterが起動されますが、UIに反映されません。 (値を反映するために、スイッチのUIを取得する)また、その下に以下を追加する必要がちょうど
var set = this.CreateBindingSet<SettingsView, SettingsViewModel>();
set.Bind(PushNotificationSwitch).For(s => s.On)
.To(vm => vm.ReceivePushNotifications);
set.Apply();
から行くために
var settingsViewModel = ((SettingsViewModel)ViewModel);
PushNotificationSwitch.On = settingsViewModel.ReceivePushNotifications;
私を強制私は結合を残しただけでなく、 UIの状態を反映するための新しいコードは、正しい状態を反映したUIだけでなく、ユーザーが自分の設定を変更したときにその状態を変更するサービスです。
最近MacでXamarin Studioからアップグレードしましたが、私のiOS Xamバージョンはバージョン10.0.0.6です。残念ながら、アップグレードしたバージョンは確認していませんでしたが、利用可能なバージョンがあるとすぐにアップグレードするので、以前の安定バージョンにする必要があります。
私の質問は以下のとおりです。
- は、あなたがたのうち、バインディングがこの方法で変更同様の問題を経験していますか?
- Androidバインディングが正常に動作するため、MvvmCross、またはiOS Xamarinの変更の問題だとお考えですか?
- 何が原因である可能性がありますか?これが影響を与えると思われる他の部分はありませんので、もし存在しなければバグを探す必要はありません。コマンド、テキスト、およびカスタムコントロールのバインディングが正常に動作しています(私がテストした限り)
この質問が他の場所に適している場合は、私にこの動作について興味があります。我々はOPのコメントで働いたようスイッチのイベントが出てリンクされた
おかげ
この動作は、デバッグビルドとリリースビルドの両方に表示されますか、またはそのいずれか一方のみに表示されますか?それはコードを削除しているリンカである可能性があります。 LinkerPleaseIncludeファイルにスイッチ用のコードがありますか? – Cheesebaron
@Cheesebaronこれは、デバッグとリリースの両方で発生し、私はLinkerPleaseIncludeファイルのスイッチ用のコードを持っていません。 –
次のように追加できますか? 'public void Include(UISwitch sw) { sw.On =!sw.On; sw.ValueChanged + =(送信者、引数)=> {sw。On = false; }; } ' – Cheesebaron