将命令绑定到viewmodel xamarin棱镜中的模板视图



我在项目中使用棱镜。我的问题是:我有一个视图OrdemServicoView和一个模型OrdemServicViewModel,OrdemServicoView有一个同步列表。。。内部有一个带有一些属性传递的DataTemplate,我可以绑定,但当我尝试在模板内部使用命令时,它不起作用,命令代码在OrdemServicoViewModel中。。。我该怎么做?

OrdemServicoViewModel:

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

OrdemServicoView(列表(:

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

在OrdemServicoCardView中,我尝试用ItemSelectedCommand绑定的制作一个按钮

您遇到的问题与绑定上下文有关。例如,通常在视图中,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作为绑定上下文的元素提供一个名称。你可以选择任何你喜欢的东西,真的,我通常只引用父页面,但实际的列表视图也会很好地工作。接下来,我们需要添加该命名元素作为BindingSource。最后,我们需要意识到,我们的新绑定上下文是我们作为源添加的元素,因此我们必须在绑定之前使用BindingContext属性,以便在ViewModel中具有适当的范围。

相关内容

  • 没有找到相关文章

最新更新