Как установить привязку пользовательского элемента управления к свойству модели родительского представления в формах Xamarin при использовании ListView? - PullRequest
0 голосов
/ 13 марта 2019

В Xamarin Forms я определил пользовательский шаблон данных следующим образом:

<DataTemplate x:Key="MyControlDataTemplate">
     <ViewCell>
        <controls:MyControl/>
    </ViewCell>
</DataTemplate>

Этот фрагмент принадлежит ListView in MainPage.xaml, контекст привязки которого установлен на MainPageViewModel.cs

Внутри MyControl, я хочу привязать к свойству MainPageViewModel.

<Label.GestureRecognizers>
    <TapGestureRecognizer Command="{set binding here to MainPageViewModel property}" />
</Label.GestureRecognizers>

MainPageViewModel имеет это свойство команды:

public Command<MyItem> LabelTappedCommand { get; set; }

Идея состоит в том, чтобы создать один Command объект, который будет использоваться совместно для каждой ячейки, также установив CommandParameterсвойство, но я сейчас застрял со свойством Command.

Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Я думаю, что единственное решение - выставить привязку команд через MyControl.cs.После этого вы можете использовать решение, которое ссылается на некоторый родительский элемент управления в качестве связующего контекста (описанного в ответе @Knoop, и вы сказали, что знаете, как оно работает, поэтому я не буду вдаваться в подробности по этому поводу).

0 голосов
/ 13 марта 2019

Это, безусловно, возможно за 2 простых шага.

  1. Дайте вашей странице xaml x:Name=MainPage.
  2. Назовите это в привязке следующим образом: Command="{Binding Path=BindingContext.MyProperty, Source={x:Reference MainPage}}"

Предполагается, что для BindingContext вашей главной страницы установлено значение MainPageViewModel, но в любом случае выполучить идею.

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