2012-09-01 49 views
1

假设我有一个像这样的XAML代码:如何从其子元素获取GridViewItem?

<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)。请帮忙!

谢谢!

+0

XAML代码是否正确?我无法找到GridView的Property ItemTemplate http://msdn.microsoft.com/en-us/library/system.windows.controls.gridview%28v=vs.100%29 –

+0

是的,它是正确的。现在我从g中获取null,但是如果使用,我可以获取GridViewItem对象。 – bloodfire1004

+0

看看这个http://blog.jerrynixon.com/2012/09/how-to-access-named-control-inside-xaml.html –

回答

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); 
}