【问题标题】:How do I get cell row and column indexes of UWP Grid control?如何获取 UWP Grid 控件的单元格行和列索引?
【发布时间】:2016-03-30 13:47:26
【问题描述】:

当点击网格控件的特定单元格时,我一直在尝试获取行索引和列索引。目前还没有...

当我点击网格控件的某个位置时,我实现了获取 X 和 Y 的绝对值。

private void gridGameBoard_Tapped(object sender, TappedRoutedEventArgs e)
{
    Grid grd = sender as Grid;
    Point pos = e.GetPosition(grd);
}

我试过了:

int row = Grid.GetColumn(grd);
int col = Grid.GetRow(grd);

无论我点击哪里,两者都只给我零。

我没有找到其他方法来获取点击单元格的行和列索引...

XAML 代码:

<Grid Background="Firebrick">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="3*" />
        <ColumnDefinition Width="1*" />
    </Grid.ColumnDefinitions>

    <Grid Grid.Column="0" Name="gridGameBoard" Tapped="gridGameBoard_Tapped">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1*" />
            <ColumnDefinition Width="1*" />
            <ColumnDefinition Width="1*" />
            <ColumnDefinition Width="1*" />
            <ColumnDefinition Width="1*" />
            <ColumnDefinition Width="1*" />
            <ColumnDefinition Width="1*" />
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            <RowDefinition Height="1*" />
            <RowDefinition Height="1*" />
            <RowDefinition Height="1*" />
            <RowDefinition Height="1*" />
            <RowDefinition Height="1*" />
            <RowDefinition Height="1*" />
            <RowDefinition Height="1*" />
        </Grid.RowDefinitions>

        <!-- # # # COLUMN 0 # # # -->
        <Image Grid.Row="0" Grid.Column="0" Source="Assets/box.png" Height="51" Width="69" />
        <Image Grid.Row="0" Grid.Column="0" Name="img00" VerticalAlignment="Center" HorizontalAlignment="Center" Stretch="None" />

        <Image Grid.Row="1" Grid.Column="0" Source="Assets/box.png" Height="51" Width="69" />
        <Image Grid.Row="1" Grid.Column="0" Name="img01" VerticalAlignment="Center" HorizontalAlignment="Center" Stretch="None" />

        <Image Grid.Row="2" Grid.Column="0" Source="Assets/box.png" Height="51" Width="69" />
        <Image Grid.Row="2" Grid.Column="0" Name="img02" VerticalAlignment="Center" HorizontalAlignment="Center" Stretch="None" />

        <Image Grid.Row="3" Grid.Column="0" Source="Assets/box.png" Height="51" Width="69" />
        <Image Grid.Row="3" Grid.Column="0" Name="img03" VerticalAlignment="Center" HorizontalAlignment="Center" Stretch="None" />

        <Image Grid.Row="4" Grid.Column="0" Source="Assets/box.png" Height="51" Width="69" />
        <Image Grid.Row="4" Grid.Column="0" Name="img04" VerticalAlignment="Center" HorizontalAlignment="Center" Stretch="None" />

        <Image Grid.Row="5" Grid.Column="0" Source="Assets/box.png" Height="51" Width="69" />
        <Image Grid.Row="5" Grid.Column="0" Name="img05" VerticalAlignment="Center" HorizontalAlignment="Center" Stretch="None" />

        <!-- # # # COLUMN 1 - 6 are same as COLUMN 0 # # # -->

    </Grid>
</Grid>

【问题讨论】:

    标签: c# win-universal-app windows-10-universal


    【解决方案1】:

    使用Grid.GetColumn(grd);

     private void gridGameBoard_Tapped(object sender, TappedRoutedEventArgs e)
                {
                    Grid grd = sender as Grid;
                 int i =    Grid.GetColumn(grd);//To get column no
                 Grid.GetRow(grd);//To get row no
                }
    

    【讨论】:

    • Archana,感谢您的快速回放。但我忘了提到我已经尝试过这个int row = Grid.GetColumn(grd);int col = Grid.GetRow(grd);。无论我点击哪里,两者都只给我零。
    • 它给出了正确的值。您的网格位于第 0 行第 0 列
    • 你想获取网格内控件的列值吗?
    • 所以这样我得到了我的子网格(gridGameBoard)与我的父网格相关的行和列(没有名字)?如果是这样,当我点击某个单元格时,如何获取子网格(gridGameBoard)的行和列索引?提前致谢。
    • 是否必须在特定单元格中获取网格的子元素,然后使用Grid.GetColumn(childElement) 获取右列和行索引?
    【解决方案2】:

    非常感谢至宝。

    解决办法是:

    <Image Grid.Row="0" Grid.Column="0" Source="Assets/img.png"  Tapped="image_Tapped" />
    
    private void image_Tapped(object sender, TappedRoutedEventArgs e)
    {
        Image img = sender as Image;
    
        int row = Grid.GetRow(img);
        int col = Grid.GetColumn(img);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 2015-05-05
      • 2016-08-28
      • 2013-06-24
      • 2019-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多