0

私はそれぞれボタンとListViewのような4つのグリッドを持っています

<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が1つしかない場合、このようなものが機能するはずです...

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 に答える