формы xamarin - связывайте TapGestureRecognizer с выделенным кодом, а не с моделью представления - PullRequest
0 голосов
/ 15 ноября 2018

Я понимаю, что это нарушает шаблон MVVM, но возможно ли привязать TapGestureRecognizer к методу в коде XAML.cs, а не к модели представления?

  <Image.GestureRecognizers>
      <TapGestureRecognizer 
        Command="{Binding Path=BindingContext.SetImageCommand, Source={x:Reference ThePage}}"
        CommandParameter="{Binding .}"/>
  </Image.GestureRecognizers>

1 Ответ

0 голосов
/ 15 ноября 2018

Конечно, просто используйте событие Tapped.

<TapGestureRecognizer Tapped="Thing_Tapped" />

и в вашем коде:

public void Thing_Tapped (object sender, EventArgs args)
{
   // Do your thing
}

Возможно, на второй взгляд, вы имеете в виду, если вы можете связать Command с чем-то из кода. Я не проверял это, но похоже, что он должен работать с вашим кодом и незначительной корректировкой, просто сделайте это:

<Image.GestureRecognizers>
      <TapGestureRecognizer Command="{Binding Path=SetImageCommand, Source={x:Reference ThePage}}" CommandParameter="{Binding .}"/>
</Image.GestureRecognizers>

Обратите внимание, как я удалил BindingContext. из привязки. Это означает, что он был привязан к свойству BindingContext вашей страницы. Конечно, вы можете связать и другие свойства. Теперь вы можете просто переместить SetImageCommand в код вашей страницы, и он должен работать.

В любом случае, теперь вы можете запускать логику со своей страницы вместо модели представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...