如何从其子元素中获取GridViewItem?

时间:2012-09-01 06:59:58

标签: c# xaml gridview windows-8

假设我在XAML中有这样的代码:

<GridView>
  <GridView.ItemTemplate>
<DataTemplate>
    <Button Content="{Binding test}" Click="ButtonClick" />
</DataTemplate>
</GridView.ItemTemplate>
</GridView>

然后我怎样才能选择 GridViewItem ?因为,通常所做的是将 ItemClick功能添加到GridView本身,但在这种情况下,我正在做一些自定义的事情,需要从Button开始获取SelectedItem。

我尝试过这样的代码:

void ButtonClick (object sender, RoutedEventArgs e)
{
   var g = (GridViewItem)((Button)sender).Parent;
}

但它不起作用(返回null)。请帮忙!

谢谢!

1 个答案:

答案 0 :(得分:1)

当然!以下是广告控件无法加载广告时使用的代码(例如机器离线时)。在那种情况下,我从gridview中删除它。要做到这一点,我必须找到广告的父gridviewitem并删除整个事情。我是这样做的:

private void AdControl_ErrorOccurred_1(object sender, Microsoft.Advertising.WinRT.UI.AdErrorEventArgs e)
{
    var _Item = sender as DependencyObject;
    while (!(_Item is GridViewItem))
        _Item = VisualTreeHelper.GetParent(_Item);
    HubGrid.Items.Remove(_Item);
}