1

使用 Mvvmcross 和 Monodroid 创建 Android 应用程序时,我有一个由表组成的活动。当按下表格的一个元素时,ItemClick 方法的绑定会被调用两次。这是概率性的,因为它会导致视图的其他元素出现问题。

表视图.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 问题吗?有没有办法可以进一步追踪绑定?

有已知的修复方法吗?

4

1 回答 1

2

OnClick 方法被调用两次,与日志记录测试相同。

我刚刚在https://github.com/slodge/MvvmCross-Tutorials/tree/master/ApiExamples的列表视图上测试了这个

我修改了视图模型:

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- 然后使用应用程序中该列表视图上的“正常调试技术”。

于 2013-08-24T14:32:10.590 回答