1

MvvmCross を使用して、整数を可視性に変換するように設定されたコンバーターを使用して、TextView の Android:visibility を "Results.Count" に似たパスにバインドしようとしています (null ではなくゼロより大きい場合、TextView は可視です)。

Results が null の場合、アプリの出力にエラーが表示されます。

[MvxBind] 1.34 SearchResult.Count から Visibility へのバインド実行中に問題が発生 - 問題 InvalidCastException: Null オブジェクトを値型に変換できません。[MvxBind] at System.Convert.ToType (System.Object 値、System.Type conversionType、IFormatProvider プロバイダー、Boolean try_target_to_type) [0x00000] in :0 [MvxBind] at System.Convert.ChangeType (System.Object 値、System.Type) conversionType, IFormatProvider provider) [0x00000] in :0 [MvxBind] at Cirrious.MvvmCross.Binding.ExtensionMethods.MvxTypeExtensions.MakeSafeValue (System.Type propertyType, System.Object value) [0x00000] in :0 [MvxBind] at Cirrious.MvvmCross. .Binding.Bindings.Target.MvxPropertyInfoTargetBinding.MakeSafeValue (System.Object 値) [0x00000] in :0 [MvxBind]
Cirrious.MvvmCross.Binding.Bindings.Target.MvxPropertyInfoTargetBinding.SetValue (System.Object 値) [0x00000] で:0 [MvxBind]
Cirrious.MvvmCross.Binding.Bindings.MvxFullBinding.UpdateTargetFromSource (Boolean isAvailable, System.Object value) [0x00000] in :0 MvxBind:Error: 1.34 SearchResult.Count から Visibility へのバインド実行中に問題が発生 - 問題 InvalidCastException: Null オブジェクトMvxBind:Error: 1.34 SearchResult.Count から Visibility へのバインド実行中に問題が発生しました - 問題 InvalidCastException: Null オブジェクトを値型に変換できません。System.Convert.ToType で (System.Object 値、System.Type conversionType、IFormatProvider プロバイダー、ブール値の try_target_to_type) [0x00000] in :0 System.Convert.ChangeType (System.Object 値、System.Type conversionType、IFormatProvider プロバイダー) で [ 0x00000] in :0

コンバーターは呼び出されません。この場合、Silverlight や WPF のように、コンバーターが呼び出されることを期待していました。

ソースコードで MvvmCross を追加して、この問題を自分でデバッグしようとしました (github から必要なすべてのプロジェクトを追加しました)。例外呼び出しスタック (例: Cirious.MvvmCross.Binding.ExtensionMethods.MvxTypeExtensions.MakeSafeValue) に示されているさまざまなメソッドにブレークポイントを設定しましたが、実行時にブレークポイントにヒットせず、デバッガーによって無視されました。

奇妙なことは、MvvmCross ソース コードの他の部分 (MvxAndroidSetup など) にブレークポイントを設定すると機能したことです。

コンバーターの問題に加えて、MvvmCross コードでブレークポイントを機能させる方法を知りたいです。理解を深めることができ、可能であれば開発に参加することもできます。

4

1 に答える 1