【问题标题】:Gridview itemclick in pivotGridview itemclick 在枢轴
【发布时间】:2016-11-01 16:43:10
【问题描述】:

我在枢轴控件中有一个网格视图,我想在单击网格项时调用视图模型上的一个方法(带有项目 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

中使用该名称

这里有关于最佳实践的帮助吗?提前通知

【问题讨论】:

    标签: uwp uwp-xaml template10


    【解决方案1】:

    我想我可以在 gridview 上使用类似的东西:ItemClick="{Binding ClickCommand, ElementName=ViewModel}"

    我们不能直接将Binding 对象设置为ItemClick 事件。在您的场景中,建议使用 XamlBehaviors SDK。我们可以将CallMethodAction 用于Itemclick EventTriggerBehavior,如下所示,注意为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)
     {
        ...
     }
    

    上面代码sn-p中的ElementName绑定是页面对象。有关如何使用和安装XamlBehaviors 的更多详细信息,请参考wiki of XamlBehaviors。也可以通过Xaml.BehaviorsNuget包安装SDK。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 2020-09-30
      • 2017-11-27
      • 1970-01-01
      相关资源
      最近更新 更多