Wiązanie komend dotykowych mvvmcross na Androidzie
Szukam sposobu na powiązanie komendy „Touch” między axml i ViewModel, lub innej, takiej jak FocusChanged itp.
Proste polecenie „Kliknij” działa tak, jak poniżej: local: MvxBind = "{'Touch': {'Path': 'CameraButtonCommand'}}" />
public IMvxCommand CameraButtonCommand
{
get
{
return new MvxRelayCommand(
() =>
{
RequestNavigate<AugRealityViewModel>(true);
})
;
}
}
Jednak wypróbowałem inne typy zdarzeń dla kontrolera (w tym przypadku jest to ImageButton) i nie są one przetwarzane. Po sprawdzeniu listy wydarzeń w klasie View widzę:
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;
Tylko zdarzenie Click ma dołączony ogólny EventHandler, podczas gdy inne generują EventHandlers i zastanawiam się, czy to jest powód, dla którego to nie działa.
Próbowałem również dołączyć metodę do tych zdarzeń w klasie View, uzyskując odpowiednią kontrolę za pomocą metody FindViewById i tym razem działa zgodnie z oczekiwaniami. Ale jakoś nie mogę tego zrobić w axml za pomocą poleceń.
Jeszcze jedno. Zdarzenie „Click” wysyła obiekt „EventArgs” jako jeden z parametrów, a także odwołanie do obiektu. Widzę to z łatwością, jeśli wykonam to zachowanie w klasie View, ale gdy to zrobię przez powiązanie, nie widzę tych argumentów podczas przetwarzania polecenia w ViewModel.