Windows 8 C#GridView e.单击编辑项

Windows 8 C#GridView e.单击编辑项,c#,gridview,windows-8,indexof,C#,Gridview,Windows 8,Indexof,我有一个包含项目的GridView,还有一个数组,其中包含我的GridView中特定项目的详细信息。 我想获取所单击项目的索引,我尝试使用我先前在列表视图中使用的相同代码: private void GridView1_ItemClick(object sender, ItemClickEventArgs e) { int test = GridView1.Items.IndexOf(e.ClickedItem); } 调试代码时,inttest将始终具有值-1。我不知道为什么这不起作

我有一个包含项目的
GridView
,还有一个数组,其中包含我的
GridView
中特定项目的详细信息。 我想获取所单击项目的索引,我尝试使用我先前在
列表视图中使用的相同代码:

private void GridView1_ItemClick(object sender, ItemClickEventArgs e)
{
    int test = GridView1.Items.IndexOf(e.ClickedItem);
}
调试代码时,int
test
将始终具有值
-1
。我不知道为什么这不起作用,我希望你们中的一个能起作用

编辑:感谢所有回复!这里有一些额外的信息:我已经禁用了
SelectionMode
,因为我只想捕获
ClickedItem
的索引。我想知道索引,因为它链接到我的额外信息数组

由于我的
SelectionMode
设置为“无”,我无法捕获SelectedItem/SelectedIndex。我试图启用它们,但再次收到值'-1'

编辑#2:自从我手动添加项目以来,我没有设置任何
ItemSource
。这可能是问题所在吗?我的
ListView
在使用no
ItemSource
时没有问题

编辑#3:

C#代码:

XAML:


-1表示未选择任何索引。 如果需要对单击的项目执行某些操作,可以执行以下操作:

var item=GridView1.SelectedItem;
var index= GridView1.SelectedIndex;
如果只需要索引,则可以执行以下操作:

var item=GridView1.SelectedItem;
var index= GridView1.SelectedIndex;

不知道为什么要这样做,在标记中声明控件,并在标记中将其绑定到某个对象权限或类似对象,会容易得多

但是,要获取项目的索引,您应该搜索单击的项目父项,如下所示:

private void GridView1_ItemClick(object sender, ItemClickEventArgs e)
{
    int test = GridView1.Items.IndexOf((e.ClickedItem as FrameworkElement).Parent);
}

可能会有帮助我试过了,它对我有用,你如何绑定你的GridView?顺便问一下。为什么你需要索引?谢谢回复,我用新信息更新了我的帖子。尝试向列表中添加项目,然后用该列表设置项目资源谢谢回复,我用新信息更新了我的帖子。这个方法对我不起作用。我找到了我自己问题的答案:我添加了一个新的全局变量:StackPanel[]content\u StackPanel=new StackPanel[99];我在GridView1\u ItemClick int index=0中添加了以下内容:;foreach(content_stackpanel中的var item){if(item==e.ClickedItem){break;}index++}但是您的解决方案也很有效,而且更好,我将使用您的解决方案。