Heyas,很长一段时间阅读,第一次发帖。
我的简短问题是,是否有一种简单的方法可以在Xamarin中找到XAML的问题? XAMLC编译并没有削减它。
我的长期问题 - 我在Xamarin的XAML错误中度过了最糟糕的一天。通过一些严肃的试验和错误,基本上反复拆解应用程序,最终在我的XAML中找到错误。之后看着这个问题,我真的无法从我所掌握的信息中看到我能找到问题。
违规守则 -
<TableView Intent="Form">
<TableRoot>
<TableSection Title="Name" >
<EntryCell Label="First Name" Text="{Binding FirstName}"/>
<EntryCell Label="Last Name" Text="{Binding LastName}"/>
</TableSection>
<TableSection Title="Contact">
<EntryCell Label="Phone" Text="{Binding PhoneNumber}"/>
<EntryCell Label="Email" Text="{Binding Email}"/>
<SwitchCell Text="Blocked" IsEnabled="{Binding IsBlocked}" />
</TableSection>
</TableRoot>
如果你错过了它,要绑定的SwitchCell属性应该是on="{Binding IsBlocked}"
,而不是IsEnabled。
我正在使用XAMLC,但这会产生Android运行时错误 -
04-18 13:49:27.395 4219 4219 E AndroidRuntime: FATAL EXCEPTION: main
04-18 13:49:27.395 4219 4219 E AndroidRuntime: Process: ContactBookApp.Android, PID: 4219
04-18 13:49:27.395 4219 4219 E AndroidRuntime: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
04-18 13:49:27.395 4219 4219 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-18 13:49:27.395 4219 4219 E AndroidRuntime: Caused by: java.lang.reflect.InvocationTargetException
04-18 13:49:27.395 4219 4219 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
04-18 13:49:27.395 4219 4219 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
04-18 13:49:27.395 4219 4219 E AndroidRuntime: ... 1 more
04-18 13:49:27.395 4219 4219 E AndroidRuntime: Caused by: android.runtime.JavaProxyThrowable: System.ArrayTypeMismatchException: Attempted to access an element as a type incompatible with the array.
04-18 13:49:27.395 4219 4219 E AndroidRuntime: at (wrapper stelemref) System.Object:virt_stelemref_class (intptr,object)
04-18 13:49:27.395 4219 4219 E AndroidRuntime: at System.Collections.Generic.List`1[T].Insert (System.Int32 index, T item) [0x0005f] in <8c304e4006094a46a7950338a3b3cb5d>:0
04-18 13:49:27.395 4219 4219 E AndroidRuntime: at System.Collections.ObjectModel.Collection`1[T].InsertItem (System.Int32 index, T item) [0x00000] in <8c304e4006094a46a7950338a3b3cb5d>:0
04-18 13:49:27.395 4219 4219 E AndroidRuntime: at System.Collections.ObjectModel.ObservableCollection`1[T].InsertItem (System.Int32 index, T item) [0x00006] in <8dac28ffb2cb41cba0b572038da86c99>:0
04-18 13:49:27.395 4219 4219 E AndroidRuntime: at System.Collections.ObjectModel.Collection`1[T].Add (T item) [0x00023] in <8c304e4006094a46a7950338a3b3cb5d>:0
04-18 13:49:27.395 4219 4219 E AndroidRuntime: at Xamarin.Forms.TableSectionBase`1[T].Add (T item) [0x00000] in <42fe931976e64c199eddde45068a6c09>:0
04-18 13:49:27.395 4219 4219 E AndroidRuntime: at ContactBookApp.ContactDetailPage.InitializeComponent () [0x005f4] in <69ecbdf8eeeb43588bf41fa5db9c9afb>:0
04-18 13:49:27.395 4219 4219 E AndroidRuntime: at ContactBookApp.ContactDetailPage..ctor (ContactBookApp.Contact contact) [0x0001b] in <69ecbdf8eeeb43588bf41fa5db9c9afb>:0
04-18 13:49:27.395 4219 4219 E AndroidRuntime: at ContactBookApp.ContactsPage+<Contacts_ItemSelected>d__1.MoveNext () [0x00066] in <69ecbdf8eeeb43588bf41fa5db9c9afb>:0
04-18 13:49:27.395 4219 4219 E AndroidRuntime: --- End of stack trace from previous location where exception was thrown ---
此错误确实指定了包含错误ContactDetailPage
的页面,但也指定了创建它的页面ContactPage
。我花了很多时间在VS2017中调试器,但只得到一个未处理的异常。还尝试使用UWP构建进行故障排除,并获得更少的信息。 (如何找到?!?)
我最近才在15年的间歇后再次编码,这只是教程练习,但肯定有一种更简单的方法。
提前致谢:D