从ViewModel Xamarin Prism将命令绑定到模板视图

时间:2018-11-26 13:22:01

标签: xamarin prism

我在项目上使用了棱镜。我的问题是:我有一个View 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 :(得分:0)

您遇到的问题与绑定上下文有关。例如,通常在您的View中,您的BindingContext是您的ViewModel。当在诸如ListView之类的内部使用DataTemplate时,您的BindingContext就是可以作为ItemsSource传递给该ListView的任何数据模型。因此,诀窍是能够参考原始的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是作为源添加的Element,因此必须在Binding之前加上BindingContext属性,以将适当的范围包含在ViewModel中。