2012-09-01 51 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); 
}