我在项目上使用了棱镜。我的问题是:我有一个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的按钮
答案 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中。