MvvmCross绑定导致的意外行为。

时间:2013-08-01 22:28:03

标签: android binding mvvmcross

这篇文章基于我在stackoverflow上发布的上一个问题。我找到了我的问题的解决方案,但我发布这个问题因为我怀疑这是MvvmCross平台中的一个错误。问题可以在Custom ToggleButton in Xamarin.Android找到。要复制该行为,请执行以下步骤:

扩展ToggleButton(我发现这个问题有切换按钮但我猜它与其他UI元素相同)并为click事件创建了监听器:

public sealed class MyToggleButton : ToggleButton, View.IOnClickListener
{
    public MyToggleButton(Context context, IAttributeSet attrs) 
        : base(context, attrs)
    {
        SetOnClickListener(this);
    }

    public void OnClick(View v)
    {

    }
}

添加MyToggleButton以在.axml文件中查看但不将任何内容绑定到MyToggleButton的Click事件,而不是将断点(或Trace语句)放置到OnClick(View v)方法。当你运行程序时,你应该点击断点(或者在visual studio的输出窗口中看到跟踪)。停止执行并修改.axml文件以将绑定添加到Click事件: local:MvxBind =“Click ClickCommand”。如果再次运行解决方案,则不会执行OnClick(View v)(上面提到的断点或跟踪状态将不会被命中)。使用MvvmCross时是否有预期的行为?任何解释将不胜感激。

乌罗什。

1 个答案:

答案 0 :(得分:0)

这只是普通的Java观察者/监听器模式,它与MonoDroid的交互。

一次只能调用SetOnClickListener一件事。 C#click事件调用SetOnClickListener作为其实现的一部分,它将取代您之前的注册。