使用 MvvmCross,我试图将 TextView 的 android:visibility 绑定到类似于“Results.Count”的路径,并设置一个转换器以将整数转换为可见性(如果不是 null 且大于零,则 TextView 是可见的)。
如果 Results 为 null,则在应用程序输出中显示错误:
[MvxBind] 1.34 从 SearchResult.Count 到 Visibility 的绑定执行期间出现的问题 - 问题 InvalidCastException:无法将 Null 对象转换为值类型。System.Convert.ToType 处的 [MvxBind](System.Object 值,System.Type 转换类型,IFormatProvider 提供程序,布尔 try_target_to_type) [0x00000] 在 System.Convert.ChangeType 处的 [0x00000] [MvxBind](System.Object 值,System.Type转换类型,IFormatProvider 提供程序)[0x00000] in :0 [MvxBind] at Cirrious.MvvmCross.Binding.ExtensionMethods.MvxTypeExtensions.MakeSafeValue(System.Type propertyType,System.Object 值)[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] in :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:错误:1.34 从 SearchResult.Count 到 Visibility 的绑定执行期间出现的问题 - 问题 InvalidCastException:无法将 Null 对象转换为值类型。在 System.Convert.ToType(System.Object 值,System.Type conversionType,IFormatProvider 提供程序,布尔 try_target_to_type)[0x00000] 在 System.Convert.ChangeType 处:0(System.Object 值,System.Type 转换类型,IFormatProvider 提供程序)[ 0x00000] 在 :0
转换器不会被调用。我本来希望在这种情况下调用转换器,就像在 Silverlight 或 WPF 中一样。
我尝试通过源代码添加 MvvmCross 自己调试此问题(我从 github 添加了所有必要的项目)。我在异常调用堆栈中显示的不同方法中设置了断点(例如:Cirrious.MvvmCross.Binding.ExtensionMethods.MvxTypeExtensions.MakeSafeValue),但是在运行时,断点没有被命中,它们被调试器忽略了。
奇怪的是,在 MvvmCross 源代码的其他部分(如在 MvxAndroidSetup 中)设置断点有效。
除了转换器的问题,我想知道如何使断点在 MvvmCross 代码中工作。如果可能的话,它会让我了解更多,甚至参与到开发中。