我正在寻找一种在 axml 和 ViewModel 之间进行“Touch”命令绑定的方法,或者像 FocusChanged 等其他一些方法。
一个简单的“单击”命令可以正常工作,如下所示:local:MvxBind="{'Touch':{'Path':'CameraButtonCommand'}}" />
public IMvxCommand CameraButtonCommand
{
get
{
return new MvxRelayCommand(
() =>
{
RequestNavigate<AugRealityViewModel>(true);
})
;
}
}
但是,我已经为控件尝试了其他事件类型(在本例中是 ImageButton)并且它们没有被处理。当我检查视图类中的事件列表时,我看到了这些:
public event EventHandler Click;
public event EventHandler<View.CreateContextMenuEventArgs> ContextMenuCreated;
public event EventHandler<View.FocusChangeEventArgs> FocusChange;
public event EventHandler<View.KeyEventArgs> KeyPress;
public event EventHandler<View.LongClickEventArgs> LongClick;
只有 Click 事件附加了通用的 EventHandler,而其他事件具有通用的 EventHandler,我想知道这是否是它不起作用的原因。
我还尝试将方法附加到 View 类中的这些事件,通过 FindViewById 方法获得适当的控制,这次它按预期工作。但不知何故,我无法通过命令在 axml 中做到这一点。
还有一件事。“Click”事件正在发送“EventArgs”对象作为参数之一,也是对象引用。如果我在 View Class 中执行此行为,我可以轻松地看到这一点,但是当我通过绑定执行此操作时,我在 ViewModel 中处理命令时看不到这些参数。