Mvvmcross TableView绑定触发两次

时间:2013-08-23 22:00:13

标签: c# android xamarin.android mvvmcross

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

是否有已知的修复方法?

1 个答案:

答案 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文件

您可以将MvxListViewhttps://github.com/slodge/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross.Binding.Droid/Views/MvxListView.cs复制到应用程序中的新类 - 比如说MyListView - 然后在应用程序的列表视图中使用'常规调试技术'。