2014-11-02 57 views
2

我有一個GridView的元素,我想在單擊其中一個元素時執行一些操作。所以我將GridView的ItemClick屬性設置爲TopicsPage_ItemClick並實現該方法。我想這樣的反應(少數嘗試):在WPF GridView中查找單擊元素的索引

​​

但每一個解決方案上面拋出ArgumentOutOfRangeExceptionindex = -1。我在另一個頁面上有完全相同的解決方案,我在GridView中有按鈕,並且實現了它們的Click,並且它在那裏工作。任何建議都會很有意義。

+0

不知道是什麼你是綁定,但你可以看看我的文章[這裏](http://www.codeproject.com/Articles/671544/Understanding-SelectedValue-SelectedValuePath-Sele)關於選定的索引/值等有什麼區別在這和你的其他之間?只有元素的類型? – Noctis 2014-11-02 02:15:23

+1

我不確定在Windows Phone中的GridView,但我猜'e.ClickedItem作爲FrameworkElement'會評估爲null。嘗試像這樣'itemGridView.Items.IndexOf(e.ClickedItem)'直接傳遞'ClickedItem'' – 2014-11-02 02:18:06

+0

第一個代碼段不起作用可能是因爲'SelectedIndex'在點擊時沒有被確定。對於第三個片段,我認爲這裏有一些綁定相關的問題。只需按照上面的建議嘗試第二個片段即可。 – 2014-11-02 02:20:48

回答

3

會假設你的GridView ItemsSource綁定到一個集合。

這裏是我的經驗,如果你有IsItemClickEnabled="True"ItemClick事件會觸發但是SelectionChanged不會觸發離開你與-1的SelectedIndex。

要獲得索引,你可以通過你從鑄造的IndexOf它抓住它

private void TopicsPage_ItemClick(object sender, ItemClickEventArgs e) 
{ 
    GridView gv = sender as GridView; 
    index = gv.Items.IndexOf(e.ClickedItem); // don't re cast it as anything; just past it 
} 

您也可以從GridView.ItemsSource collection.IndexOf得到它,以及如果你喜歡