Gridview itemclick in pivot

Gridview itemclick in pivot

我在枢轴控件中有一个 gridview,我想在单击 griditem 时调用 viewmodel 上的方法(带有项目 ID)。我在使用 Template10

的 UWP 项目

我的 xaml 看起来像:

<Pivot Name="FeedsPivot" ItemsSource="{Binding Feeds, Mode=OneWay}">
    <Pivot.ItemTemplate>
        <DataTemplate x:DataType="models:Feed">
            <GridView Name="ArticlesGridView" ItemsSource="{Binding Articles, Mode=OneWay}">
                <GridView.ItemTemplate>
                    <DataTemplate>
                        <userControls:FeedControl />
                    </DataTemplate>
                </GridView.ItemTemplate>
            </GridView>
        </DataTemplate>
    </Pivot.ItemTemplate>
</Pivot>

我想我可以在 gridview 上使用这样的东西:

ItemClick="{Binding ClickCommand, ElementName=ViewModel}"

但我总是在视图模型上下文中得到对象引用未设置到对象的实例
视图模型在页面中被引用为:

<Page.DataContext>
    <vm:MainPageViewModel x:Name="ViewModel" />
</Page.DataContext>

我还尝试为页面命名并在 ElementName

中使用该名称

这里有关于最佳实践的任何帮助吗?提前Tnx

I thought I could use something like this on the gridview:ItemClick="{Binding ClickCommand, ElementName=ViewModel}"

下面的ItemclickEventTriggerBehavior不能直接将Binding对象设置为ItemClick event. In your senario the XamlBehaviors SDK is recommended to use. We can use a CallMethodAction,注意GridView启用IsItemClickEnable .

XAML代码如下:

 <GridView Name="ArticlesGridView" ItemsSource="{Binding feeds, Mode=OneWay}"  IsItemClickEnabled="True"   >
     <Interactivity:Interaction.Behaviors>
         <Core:EventTriggerBehavior EventName="ItemClick">             
             <Core:CallMethodAction TargetObject="{Binding DataContext, ElementName=root, Mode=OneWay}" MethodName="ArticlesGridView_ItemClick" />
           </Core:EventTriggerBehavior>
       </Interactivity:Interaction.Behaviors>
     <GridView.ItemTemplate>
         <DataTemplate x:DataType="models:Vipclass">
            ...
         </DataTemplate>
     </GridView.ItemTemplate>
 </GridView>
</StackPanel>

MainPageViewModel.cs 中的代码如下:

 public void ArticlesGridView_ItemClick(object sender, ItemClickEventArgs e)
 {
    ...
 }

上面代码段中的ElementName绑定的是页面对象。有关如何使用和安装 XamlBehaviors 的更多详细信息,请参考 wiki of XamlBehaviors. You can also install the SDK by Xaml.Behaviors Nuget 包。