如何通过wpf中的行和列获取网格子节点?

Cha*_*u A 4 c# wpf grid xaml

<Grid x:Name="LayoutRoot" HorizontalAlignment="Center" VerticalAlignment="Center" >
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <Button Width="150" Height="50" x:Name="Btn1" Content="Button1" Grid.Row="0" Grid.Column="0"/>
    <Button Width="150" Height="50" x:Name="Btn2" Content="Button2" Grid.Row="0" Grid.Column="1"/>
    <Button Width="150" Height="50" x:Name="Btn3" Content="Button3" Grid.Row="2" Grid.Column="0"/>
    <Button Width="150" Height="50" x:Name="Btn4" Content="Button4" Grid.Row="2" Grid.Column="1"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

wpf中的C#代码

Visual childVisual = (Visual)VisualTreeHelper.GetChild(LayoutRoot,0);
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,我可以获得网格的第一个子节点(LayoutRoot).但是我想通过它的行或列获取网格子节点.我该怎么办呢.

提前致谢.

H.B*_*.B. 16

Grid.Children根据每个孩子的内容Grid.GetRowGetColumn回报过滤.

例如

var itemsInFirstRow = LayoutRoot.Children
                          .Cast<UIElement>()
                          .Where(i => Grid.GetRow(i) == 0);
Run Code Online (Sandbox Code Playgroud)

  • @ChandruA:看过这个例子?无论如何,如果你需要找到UI元素,你可能做错了什么,你的代码可能需要更多[数据绑定](http://msdn.microsoft.com/en-us/library/ms752347.aspx)和[命令] ](http://msdn.microsoft.com/en-us/library/system.windows.input.icommand.aspx). (2认同)