Win8 XAML Grid 点击了哪一列和哪一行

Posted

技术标签:

【中文标题】Win8 XAML Grid 点击了哪一列和哪一行【英文标题】:Win8 XAML Grid which column and row was tapped 【发布时间】:2015-07-16 11:38:49 【问题描述】:

在 Windows 商店应用程序中,我有一个包含很多列和行的网格

        <Grid x:Name="gridContainer" 
              Background="Transparent"
              Tapped="gridContainer_Tapped">
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
                ...
            </Grid.RowDefinitions>

            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                ...
            </Grid.ColumnDefinitions>
       </Grid>

并监听 Grid Tapped 事件。

private void gridContainer_Tapped(object sender, TappedRoutedEventArgs e)



是否可以在不添加额外的透明元素并跟踪它们的点击事件的情况下确定点击了哪一列和哪一行?

【问题讨论】:

您正在为整个网格提供点击事件,那么您如何获得点击了哪一行?您是否为该行和列绑定了任何数据?? "您正在为整个网格提供点击事件,那么您如何获得点击了哪一行?"我问了完全相同的问题... 我认为只有在网格上获得点击输入的坐标并使用 Grid 的坐标和它的行列进行测量时,这才有可能......!除此之外,我没有看到任何可能性.. 我通过添加不可见的控件并监听他们的 Tapped 事件解决了我的问题,但我仍然认为如果 Grid.Tapped EventArgs 有被点击的 Column 和 Row 会很有帮助:) 【参考方案1】:

如果你在这些单元格中有任何东西,你可以这样做:

private void gridContainer_Tapped(object sender, TappedRoutedEventArgs e)

   if(e.OriginalSource is FrameworkElement)
   
      var col = Grid.GetColumn(e.OriginalSource as FrameworkElement);
   

【讨论】:

以上是关于Win8 XAML Grid 点击了哪一列和哪一行的主要内容,如果未能解决你的问题,请参考以下文章

了解正在更新的列

比较两个 JSON 并显示我们更改了哪一列的活动?

D. Grid-00100(构造啊啊啊啊啊啊啊啊啊啊啊啊啊啊)

Grid布局和Flex布局.md

Xaml技术:浅谈Grid.ColumnDefinitions和Grid.RowDefinitions属性

如何在熊猫中设置第一列和第一行作为索引?