从xaml中的已知子级获取网格的另一个子级

从xaml中的已知子级获取网格的另一个子级,xaml,windows-8,Xaml,Windows 8,我有一个四个网格,每个网格有一个按钮和ListView <Grid Grid.Row="0"> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Button Click="ButtonBase_OnClick">

我有一个四个网格,每个网格有一个按钮和ListView

<Grid Grid.Row="0">
     <Grid.RowDefinitions>
     <RowDefinition Height="*"/>
     <RowDefinition Height="*"/>
     </Grid.RowDefinitions>
     <Button Click="ButtonBase_OnClick">
     <ListView .....
     </ListView>
</Grid>


您可以遍历树并获取ListView。假设只有一个与按钮平行的ListView,类似的东西应该可以工作

private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
    var par = (sender as Control).Parent;
    var gri = (par as Grid);
    if (gri != null)
    {
        foreach (var c in gri.Children)
        {
            if (c is ListView)
            {
                // do something
            }
        }
    }
}
您也可以通过命名约定来实现。将按钮命名为“BlahButton”,这意味着“BlahListView”是并行列表视图。你也可以用一个普通的钩子,比如