我有一个四个网格,每个网格都有一个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事件的按钮位于同一网格中?
答案 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之类的常规挂钩。