c# - 如何访问行和列中的元素

标签 c# windows-phone-7 grid rows element

我想访问包含列和行的网格内的所有元素。

我对找到的方法进行了编辑,但它始终返回 null。

 private static FrameworkElement GetChildren(Grid grid, int row, int column)
        {
            FrameworkElement fr = null;

            foreach (FrameworkElement child in grid.Children)
            {
                if ((Grid.GetRow(child) == row) && (Grid.GetColumn(child) == column))
                {

                      fr = child;
                }
                else
                {

                      fr = null;
                }
            }

            return fr;

        }  //getchildren

最佳答案

你的方法是正确的,但你的算法是错误的。

假设网格包含两个元素。第一个是您正在搜索的那个。

  1. foreach 枚举所有控件,并返回第一个。它是正确的行和列,因此您将其分配给 fr

  2. foreach 继续并返回第二个。它不是正确的行/列,因此您将 null 分配给 fr

  3. foreach 循环完成元素枚举,返回fr,为null。

基本上,您的代码仅在元素是网格的最后一个子元素时才有效。

要修复算法,请在找到控件时使用 break 指令退出循环:

FrameworkElement fr = null;

foreach (FrameworkElement child in grid.Children)
{
    if ((Grid.GetRow(child) == row) && (Grid.GetColumn(child) == column))
    {
          fr = child;
          break;
    }
}

return fr;

或者,您可以使用 Linq 来缩短代码:

return grid.Children
    .OfType<FrameworkElement>()
    .FirstOrDefault(child => Grid.GetRow(child) == row && Grid.GetColumn(child) == column);

关于c# - 如何访问行和列中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18557657/

相关文章:

c# - 如何调试WCF

c# - 如何将 .xml 文件与 xmlns 属性一起反序列化?

xml - WP7 从 xml Web 服务获取和存储数据以供整个项目使用

html - 如何绘制所有边框到 Angular 网格列表 Material ?

wpf - 如何让我的 ScrollViewer 滚动查看区域?

javascript - 具有动态大小图像的马赛克网格画廊

c# - 使用子字符串获取特定间隔

c# - C# 中的正则表达式过滤器

c# - 如何覆盖 Windows Phone 8 中的 Windows 后退按钮?

c# - 如何在 wp7 中显示来自网络的图像?