none
GridView 出发Hoding事件的时候如何判断长按的是哪个选项? RRS feed

答案

  • Hi,

    你可以看看这个代码,我觉得还是在GridViewItem上添加事件比较好,用GridView.ItemTemplate

     <GridView Holding="GridView_Holding_1">
                <GridView.Items>
                    <TextBlock Text="1111" />
                    <TextBlock Text="2222" />
                    <TextBlock Text="3333" />
                </GridView.Items>
                <GridView.ItemTemplate>
                    <DataTemplate>
                        
                            <ContentPresenter Content="{Binding}" Holding="ContentPresenter_Holding_1" />
                    </DataTemplate>
                </GridView.ItemTemplate>
            </GridView>
      private void ContentPresenter_Holding_1(object sender, HoldingRoutedEventArgs e)
            {
                Debug.WriteLine("holding 2");
                ContentPresenter cp = sender as ContentPresenter;
                TextBlock tb = cp.Content as TextBlock;
                Debug.WriteLine(tb.Text.ToString());
               
            }

    这里因为Items是用的TextBlock所以我用了ContentPresenter,如果绑定数据的话应该与这个差不多,可以把Holding事件添加到DataTemplate中包含显示样式最外面的容器中这样应该就可以得到是哪一个触发的事件了。

    Aaron Xue [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年11月15日 9:22
    版主

全部回复

  • 可是我这个列表的数据是绑定的,怎么能够添加在GridViewItem上?
    2012年11月15日 8:59
  • Hi,

    上面说错了。GridView添加Holding是可以触发的,不过的确有这个问题,用坐标不是很准确,请稍等我正在找解决方法。


    Aaron Xue [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年11月15日 9:16
    版主
  • Hi,

    你可以看看这个代码,我觉得还是在GridViewItem上添加事件比较好,用GridView.ItemTemplate

     <GridView Holding="GridView_Holding_1">
                <GridView.Items>
                    <TextBlock Text="1111" />
                    <TextBlock Text="2222" />
                    <TextBlock Text="3333" />
                </GridView.Items>
                <GridView.ItemTemplate>
                    <DataTemplate>
                        
                            <ContentPresenter Content="{Binding}" Holding="ContentPresenter_Holding_1" />
                    </DataTemplate>
                </GridView.ItemTemplate>
            </GridView>
      private void ContentPresenter_Holding_1(object sender, HoldingRoutedEventArgs e)
            {
                Debug.WriteLine("holding 2");
                ContentPresenter cp = sender as ContentPresenter;
                TextBlock tb = cp.Content as TextBlock;
                Debug.WriteLine(tb.Text.ToString());
               
            }

    这里因为Items是用的TextBlock所以我用了ContentPresenter,如果绑定数据的话应该与这个差不多,可以把Holding事件添加到DataTemplate中包含显示样式最外面的容器中这样应该就可以得到是哪一个触发的事件了。

    Aaron Xue [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年11月15日 9:22
    版主