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);
}
调试代码时,inttest
将始终具有值-1
。我不知道为什么这不起作用,我希望你们中的一个能起作用
编辑:感谢所有回复!这里有一些额外的信息:我已经禁用了SelectionMode
,因为我只想捕获ClickedItem
的索引。我想知道索引,因为它链接到我的额外信息数组
由于我的SelectionMode
设置为“无”,我无法捕获SelectedItem/SelectedIndex。我试图启用它们,但再次收到值'-1'
编辑#2:自从我手动添加项目以来,我没有设置任何ItemSource
。这可能是问题所在吗?我的ListView
在使用noItemSource
时没有问题
编辑#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++}但是您的解决方案也很有效,而且更好,我将使用您的解决方案。