使用Mvvmcross和Monodroid创建Android应用程序时,我有一个由表组成的活动。当按下表的元素时,ItemClick方法的绑定被调用两次。这是可能的问题,因为它会导致视图的其他元素出现问题。
TableView.axml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="..."
android:id="@+id/TableView_Container"
style="@style/TableView_SearchContainer">
<Mvx.MvxListview
android:id="@+id/TableView_List"
style="@style/TableView_List"
local:MvxBind="ItemsSource StackInfos;ItemClick OnClick;"
local:MvxItemTemplate="@layout/list_item" />
</RelativeLayout>
使用日志记录测试OnClick方法两次。
这是一个众所周知的Mvvmcross问题吗?有没有办法可以进一步追踪绑定?
是否有已知的修复方法?
答案 0 :(得分:2)
使用日志记录测试OnClick方法两次。
我刚从https://github.com/slodge/MvvmCross-Tutorials/tree/master/ApiExamples
的列表视图中对此进行了测试我修改了viewmodel:
public class ListViewModel : BaseListTestViewModel
{
private int i = 0;
public ICommand HelloCommand
{
get { return new MvxCommand(() => Mvx.Trace("Hello " + ++i));}
}
}
和视图:
<MvxListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
local:MvxBind="ItemsSource Items;ItemClick HelloCommand"
/>
查看跟踪和Android调试日志,每个项目点击只有一次调用 - 每次点击一次i
递增。
有没有办法可以进一步跟踪绑定?
您可以使用MvxBindingTrace.TraceBindingLevel = MvxTraceLevel.Diagnostic;
增加绑定日志记录详细程度 - 但我怀疑这会告诉您更多。
您可以自己构建MvvmCross源代码 - 或者从https://github.com/slodge/MvvmCross-Binaries/获取调试程序集和pdb文件
您可以将MvxListView
源https://github.com/slodge/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross.Binding.Droid/Views/MvxListView.cs复制到应用程序中的新类 - 比如说MyListView
- 然后在应用程序的列表视图中使用'常规调试技术'。