我正在与SyncFusion's TreeView合作。我有一个带有三个单独的DataTemplate / Custom View单元的TreeView。在我的主要XAML中,我有下面的树状视图代码,绑定到我的DataTemplates。
SamplePage.xaml
<syncfusion:SfTreeView x:Name="treeView"
QueryNodeSize="TreeView_QueryNodeSize"
NodeSizeMode="Dynamic"
AutoExpandMode="RootNodesExpanded"
ChildPropertyName="SubFiles"
ItemsSource="{Binding ImageNodeInfo}" Indentation="0"
ItemTemplate="{StaticResource TemplateSelector}">
</syncfusion:SfTreeView>
我现在正在尝试将命令从数据模板之一(下面的代码)绑定到连接到页面的视图模型,但似乎无法连接数据绑定。在线大多数示例在view / viewModel的同一xaml页面上显示数据模板。但是,我的代码使用的是数据模板选择器,这给了我更难的绑定路径。
SampleTemplate.xaml
<ViewCell.BindingContext>
<local:SamplePage x:Key="SamplePage">
</local:SamplePage>
</ViewCell.BindingContext>
<ImageButton Aspect="AspectFill"
Grid.Row="0" Grid.Column="3"
HorizontalOptions="End"
WidthRequest="90" HeightRequest="90"
Source="{xaml:ImageResource plus_Icon}"
Command="{Binding Path=BindingContext.AddAsJobClickedCommand}, Source={x:Reference SamplePage}"
CommandParameter="{Binding treeView}"
/>
答案 0 :(得分:1)
您可能希望列表数据模板中的代码可以直接从视图模型中调用命令,并将当前项目传递给视图模型以执行必要的操作,我建议您看一下:
https://doumer.me/xamarin-forms-listview-advanced-guide-with-mvvm/
1。我们需要在列表数据模板中创建属性。这些属性将包含其父视图的BindingContext并从中获取命令。
2。将Binding上下文从xaml传递到数据模板
3。在数据模板中接收绑定上下文,绑定命令并将当前项目作为命令的参数传递。
答案 1 :(得分:1)
尝试此操作,可能您缺少该命令的x:Reference
:
<ImageButton Aspect="AspectFill"
Grid.Row="0" Grid.Column="3"
HorizontalOptions="End"
WidthRequest="90" HeightRequest="90"
Source="{xaml:ImageResource plus_Icon}"
Command="{Binding Path=BindingContext.AddAsJobClickedCommand, Source={x:Reference treeView}}"
CommandParameter="{x:Reference treeView}"/>
注意:此处 treeView
是SfTreeView的x:Name
在此处找到Reference