Wp ListView点击事件

2015-05-07 发表

wp开发中,listView 控件怎么设置item的点击事件,怎么获取点击的item的行号,求给个例子看看,新手,求照顾。。。。

敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
全部回复:
che****lee UID.281901
2015-05-07 回复

方法很多的。
比如把item绑定到contro template 里controll的Tag上,就可以从里面定义的tap事件里拿sender(也就是control)的tag, 再cast回item。 知道是哪个item怎么都好办

xiji****nhua UID.1057613
2015-05-08 回复

Quote***链接停止解析***
方法很多的。
比如把item绑定到contro template 里controll的Tag上,就可以从里面定义的tap事件里拿sender( ...


是绑定在datatemplate上面的。。。。怎么弄{:6_246:}

coo****kid UID.732613
2015-05-09 回复

先把isclickitemenable设置为true,然后监听itemclick事件

coo****kid UID.732613
2015-05-09 回复

一般,所点击的item就是ItemsSource列表里的item实例

xiji****nhua UID.1057613
2015-05-11 回复

Quote***链接停止解析***
一般,所点击的item就是ItemsSource列表里的item实例



ListViewItem item = sightList.SelectedItem as ListViewItem;
SightInfo str = (SightInfo)item.Content;
为什么这么写,我获取的item总是空的。。。。该怎么写呢

vbfool UID.352791
2015-05-11 回复

Quote***链接停止解析***
ListViewItem item = sightList.SelectedItem as ListViewItem;
SightInfo str ...


你的数据源如果是绑定的,那么SelectedItem的类型就不是ListViewItem了,而是你绑定的数据的类型。

qiqiminmin UID.638527
2015-05-16 回复

本帖最后由 qiqiminmin 于 2015-5-16 10:34 编辑

有两个方法
假设XAML
[mw_shl_code=xml,true]<ItemsControl Margin="5,5,5,2" ItemsSource="{Binding courlist}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Tag={Binding} Tapped="item_Tapped">

</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>

</ItemsControl>
[/mw_shl_code]

【1】通过VisualTreeHelper
[mw_shl_code=csharp,true]private void item_Tapped(object sender, EventArgs e)
{
var grid = (sender as Grid);
var parent = VisualTreeHelper.GetParent(grid) as ContentPresenter;
var parent1 = VisualTreeHelper.GetParent(parent) as VirtualizingStackPanel; //这里取决于你的panel,也许是stackpanel,也学是wrappanel
int index = parent1.Children.IndexOf(parent);
}[/mw_shl_code]

【2】通过绑定的数据
[mw_shl_code=csharp,true]private void item_Tapped(object sender, EventArgs e)
{
var grid = (sender as Grid);

var data = grid.Tag as DataType;

int index = DataSourceList.IndexOf(data);

}[/mw_shl_code]



原理
【1】所有的listView, listbox,结构都是这样的, 可以称为itemscontrol,一般包含在ScrollView里面

---ScollView
|---- Stackpanel
|----ContentPresent
|-----DataTemplate (这里就是你弄的DataTemplate)

我们可以在DataTemplate里定义一个Event, 通过VirtualTreeHelp找到Stackpanel, 甚至ScrollView, 根据每个ContentPresent的ActualHeight,ActualWidth,可以得到在ScrollView中的offset,总之,这种方法是listview,listbox,itemsControl里的核武器,如果想实现一些UI特殊效果建议用这个,如果是用xamarin编程,你也只能用这个方法了,这个方法与代码结合最好,也最直观,也最容易出错,学习的时候很好用,不熟练不要用于产品。

【2】根据数据找到index是最稳妥的,因为如果你的数据全部都是绑定的话,根据数据源找到是第几行再准确不过了。

本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报