我在项目中使用棱镜。我的问题是:我有一个视图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中具有适当的范围。