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

时间:2013-02-20 19:10:58

标签: xaml windows-8

我有一个四个网格,每个网格都有一个Button,而ListView就像

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

所有出现的按钮都调用相同的事件“ButtonBase_OnClick”。我的挑战是如何获得按钮的ListView对象,该对象与生成click事件的按钮位于同一网格中?

1 个答案:

答案 0 :(得分:0)

您可以遍历树并获取ListView。假设只有一个与Button平行的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”是并行列表视图。您还可以使用Tag之类的常规挂钩。