Привязать команду к представлению шаблона из призмы viewmodel xamarin - PullRequest
0 голосов
/ 26 ноября 2018

Я использую призму на проекте.Моя проблема: у меня есть представление OrdemServicoView и модель OrdemServicoViewModel, OrdemServicoView имеет список синхронизации ... внутри есть DataTemplate с некоторым проходом свойств, и я могу связать, но когда я пытаюсь использовать команду внутри шаблона, это не работает, командакод находится в OrdemServicoViewModel ... как я могу это сделать?

OrdemServicoViewModel:

public DelegateCommand<object> ItemSelectedCommand { get; set; }

OrdemServicoView (список):

<syncfusion:SfListView.ItemTemplate>
      <DataTemplate>
         <templates:OrdemServicoCardView />
      </DataTemplate>
</syncfusion:SfListView.ItemTemplate>

В OrdemServicoCardView я пытаюсь сделатькнопка с привязкой ItemSelectedCommand

1 Ответ

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

Проблема, с которой вы столкнулись, связана с Binding Context.Например, обычно в вашем View ваш BindingContext - это ваша ViewModel.При работе с DataTemplate внутри чего-то вроде ListView ваш BindingContext вместо этого будет использовать любую модель данных, которую вы можете передавать этому ListView в качестве ItemsSource.Хитрость заключается в том, чтобы иметь возможность ссылаться на исходную ViewModel.

<syncfusion:SfListView.ItemTemplate x:Name="lv">
  <DataTemplate>
    <Button Text="Some Button"
            Command="{Binding BindingContext.MyCommand,Source={x:Reference lv}}" />
  </DataTemplate>
</syncfusion:SfListView.ItemTemplate>

Как мы это делаем, довольно просто, сначала нужно указать имя элемента, который имеет нашу ViewModel в качестве Binding Context.Вы можете выбрать все, что вам действительно нравится, я обычно просто ссылаюсь на родительскую страницу, но фактическое представление списка также будет работать нормально.Далее нам нужно добавить этот именованный элемент в качестве источника привязки.Наконец, нам нужно осознать, что наш новый Binding Context - это элемент, который мы добавили в качестве источника, поэтому мы должны добавить к нашему Binding свойство BindingContext, чтобы иметь правильную область видимости в нашей ViewModel.

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