0

我有四个网格,每个网格都有一个 Button 和 ListView

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

存在的所有按钮都调用相同的事件“ButtonBase_OnClick”。我的挑战是如何获取与生成单击事件的按钮位于同一网格中的按钮的 ListView 对象?

4

1 回答 1

0

您可以遍历树并获取 ListView。假设只有一个 ListView 与 Button 平行,这样的事情应该可以工作......

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这样的通用钩子。

于 2013-02-20T19:58:33.450 回答