Gridview项目在枢轴中单击

时间:2016-10-31 20:59:10

标签: uwp uwp-xaml template10

我在一个数据透视控件中有一个gridview,我想在点击一个griditem(带有一个项目ID)时在viewmodel上调用一个方法。我正在使用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}"

但是我总是在viewmodel上下文中将对象引用设置为对象的实例
视图模型在页面中引用,如:

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

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

中使用它

有关最佳做法的任何帮助吗? Tnx提前

1 个答案:

答案 0 :(得分:1)

  

我以为我可以在gridview上使用类似的东西:ItemClick =&#34; {Binding ClickCommand,ElementName = ViewModel}&#34;

我们无法直接将Binding对象设置为ItemClick事件。在您的senario中,建议使用XamlBehaviors SDK。我们可以使用CallMethodAction作为Itemclick EventTriggerBehavior,如下所示,请注意为IsItemClickEnable启用GridView

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。您也可以通过Xaml.Behaviors Nuget包安装SDK。