积极答复者
(C++)GridView 怎么判断当前点击的是哪一项

问题
-
数据结构是
ite {
string^ imgUrl ;
string^ title;
}
************************************************************************************************************
gridview 的 资源 ItemsSource 绑定 ItemsSource="{Binding Path=ite}"
然后 gridview 的 模版 DataTemplate 分别绑定 <image source= {Binding Path=imgUrl } />
<textblock text= {Binding Path=title} />
如图:
****************************************************************************************************************
gridview 点击事件是: ItemClick="ItemListView_Selection "/>
ItemListView_Selection ( Platform::Object^ sender, Windows::UI::Xaml::Controls::ItemClickEventArgs^ e)
{
//这里所有的图片点击,都产生同一个效果;
//当点击到第3张图片时,我想单独弹出一个msgdialog,
// 求助:怎么判断呢?
}- 已编辑 英明神武可爱 2012年8月24日 7:52
答案
-
你好,
尝试用过强制转换么
ite^ b = safe_cast<ite^>(e->ClickedItem);
b->title
请参考这个例程
http://code.msdn.microsoft.com/windowsapps/ListViewSimple-d5fc27dd#content
Jesse Jiang [MSFT]
MSDN Community Support | Feedback to us
- 已标记为答案 英明神武可爱 2012年8月24日 9:40
全部回复
-
GridView1.ItemsSource=items; GridView1_SelectionChange(object sender, SelectionChangedEventArgs e) { Item item=GridView1.SelectedItem as Item; //或者 //Item item=items[GridView1.SelectedIndex]; item里的内容就是选中的GridView的那个选项的内容了。 }
个人一直是这么做的,别人是否有更好的做法就不知道了。
- 已编辑 清风梧桐 2012年8月24日 0:26
-
Hi,
Bob Bao今天请假,已经两天了。。。
我认为sender转换到GridView没有问题,在C#中强制还是安全都没问题。提取选取的内容我不建议使用DataContext,我建议是SelectedIndex表示选取的是第几项,SeletetedItems或者SeletedItem是选的内容。或者你也可以用SelectionChanged事件中SelectionChangedEventArgs来取到选取的项。比如AddedItems是选取到的项,RemovedItems是未选取的。
你可以看看这个GridView文档中的Remark:
http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.gridview.aspx
Aaron Xue [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
-
Hi,
Bob Bao今天请假,已经两天了。。。
我认为sender转换到GridView没有问题,在C#中强制还是安全都没问题。提取选取的内容我不建议使用DataContext,我建议是SelectedIndex表示选取的是第几项,SeletetedItems或者SeletedItem是选的内容。或者你也可以用SelectionChanged事件中SelectionChangedEventArgs来取到选取的项。比如AddedItems是选取到的项,RemovedItems是未选取的。
你可以看看这个GridView文档中的Remark:
http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.gridview.aspx
Aaron Xue [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
我是C++,不是C#, sender转换到GridView 必然崩溃。
你能给我一些实际的代码帮助吗?
3Q
-
Hi,
我不是很熟悉C++,但是这在C#中使没有问题的。我测试一下c++的代码。
Aaron Xue [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
-
你好,
尝试用过强制转换么
ite^ b = safe_cast<ite^>(e->ClickedItem);
b->title
请参考这个例程
http://code.msdn.microsoft.com/windowsapps/ListViewSimple-d5fc27dd#content
Jesse Jiang [MSFT]
MSDN Community Support | Feedback to us
- 已标记为答案 英明神武可爱 2012年8月24日 9:40
-
你好,
尝试用过强制转换么
ite^ b = safe_cast<ite^>(e->ClickedItem);
b->title
请参考这个例程
http://code.msdn.microsoft.com/windowsapps/ListViewSimple-d5fc27dd#content
Jesse Jiang [MSFT]
MSDN Community Support | Feedback to us
OK,3Q.搞定。
如下图所示: