Xamarin Forms:从数据模板调用ViewModel命令 [英] Xamarin Forms: Call Command of ViewModel from DataTemplate
本文介绍了Xamarin Forms:从数据模板调用ViewModel命令的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在此遇到绑定问题。
我在控件模板中创建了一个可绑定布局:
<ContentView x:Name="SettingsMenu" ControlTemplate="{StaticResource HeaderTemplate}" AbsoluteLayout.LayoutBounds="0.5,0.5,1,1"
AbsoluteLayout.LayoutFlags="All">
<ScrollView Orientation="Vertical" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<StackLayout x:Name="SettingsStack" BindableLayout.ItemsSource="{Binding Settings}" BindableLayout.ItemTemplateSelector="{StaticResource SettingsSelectorTemplate}" Orientation="Vertical" Spacing="0" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" />
</ScrollView>
</ContentView>
我想做的是在视图模型中调用一个命令。该调用位于项模板选择器内部,作为App.xml内的资源字典
<ResourceDictionary>
<DataTemplate x:Key="PlaceholderSettingsTemplate">
### SOME STUFF
</DataTemplate>
<DataTemplate x:Key="HeaderSettingsTemplate">
### SOME STUFF
<Grid ...>
<Grid.GestureRecognizers>
<TapGestureRecognizer Tapped="ButtonClick" Command="{Binding BindingContext.SettingsTap, Source={x:Reference SettingsPage}}" CommandParameter="{Binding}" /> ########## <--------- WHAT TO USE FOR SOURCE?
</Grid.GestureRecognizers>
</Grid>
</DataTemplate>
<data:SettingsSelector x:Key="SettingsSelectorTemplate" Placeholder="{StaticResource PlaceholderSettingsTemplate}" Heading="{StaticResource HeaderSettingsTemplate}" Content="{StaticResource ContentSettingsTemplate}" />
</ResourceDictionary>
在我将其移到App.xml文件的资源字典中之前,我只使用了父Content view的x:name。但是:我不能再按名称引用它,因为我已将其移动到App.xml内的资源词典中。
现在,答案可能微不足道,但我就是找不到解决方案。
感谢任何帮助。
致以亲切的问候
StackLayout
您可以使用数据模板的推荐答案找到SettingsStack
StackLayout,它包装了所有内容。由于SettingsStack
与父内容视图具有相同的绑定上下文,因此您可以访问App.cs中的绑定上下文,如下所示:
<DataTemplate x:Key="HeaderSettingsTemplate">
<!--### SOME STUFF-->
<Grid x:Name="ParentGrid">
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding Parent.BindingContext.SettingsTap, Source={x:Reference ParentGrid}}" CommandParameter="{Binding}" />
</Grid.GestureRecognizers>
</Grid>
</DataTemplate>
ParentGrid
的父级SettingsStack
在您的当前页面上。
这篇关于Xamarin Forms:从数据模板调用ViewModel命令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文