WPF 点击ListViewItem中的Button,如何获取选中的是第几行

WPF 点击ListViewItem中的Button,如何获取选中的是第几行,第1张

你这还是标准的winform的思考方式。建议如下方法

后台设置属性observablecollection<type> items,这个type根据你自己的需求来定,type里面需要定义isselected属性。xaml里面itemssource绑定到items,并设置item template,呈现出button,还要定义itemcontainerstyle,把item的isselected绑定到typeisselected。这样你前台选中哪个,后台哪个的isselected就是true。

Item有个Selected属性,直接设置为True。例:ListView1Items(0)Selected=True,选中第一项。这样选中的和鼠标单击不同,不会发生其它事件。 如果您对我的回答有不满意的地方,还请您继续追问;

ListView lv = new ListView(); lvItemsAdd(new ListViewItem("abc")); lvItems[lvItemsIndexOf(new ListViewItem("abc"))]Selected = true; 注意第二步添加的项目是怎么定义的,在第三部就要以相同的定义方式去定位那个项目。

ListView默认情况

当item有焦点时,item上的button等子控件获取不到焦点;

当子控件有焦点时,item无焦点无法响应onItemClick事件

ViewGroupFOCUS_AFTER_DESCENDANTS:表示item的子控件优先于item获得焦点;

ViewGroupFOCUS_BEFORE_DESCENDANTS:表示item优先于其子控件获得焦点。

解决办法:

[java] view plaincopy

listViewsetOnItemSelectedListener(onItemSelectedListener);

private AdapterViewOnItemSelectedListener onItemSelectedListener =

new AdapterViewOnItemSelectedListener(){

@Override

public void onItemSelected(AdapterView<> parent, View view,

int position, long id) {

//当此选中的item的子控件需要获得焦点时

parentsetDescendantFocusability(ViewGroupFOCUS_BEFORE_DESCENDANTS);

//else parentsetDescendantFocusability(ViewGroupFOCUS_BEFORE_DESCENDANTS);

}

@Override

public void onNothingSelected(AdapterView<> parent) {

parentsetDescendantFocusability(ViewGroupFOCUS_BEFORE_DESCENDANTS);

}

}

//选中行的索引

int index = listviewSelectedIndices[0];

//选中行的值

ListViewItem selecteditem =listviewItems[index];

//选中行的第一列的值

string onetext = listviewItems[index]SubItems[1]Text;

listviewsetOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<> parent, View view,

int position, long id) {

// position就是当前item的位置,通过这个position就可以得到显示这条数据的数据源

Object o = 数据集合get(position);

//再对这个o进行处理就可以了(该对象里面就有你需要的东西)

}

});

在 adapter 的 getView 里面做处理

在List<Entity> 在Entity 里加一个isChecked 字段

点击button时执行adapternotifidatasetchanged刷新listview

此时出发adapter的getview,在这里判断entityisChecked,做自己需要的处理

listview里item的position 可以在itemclick的回调方法里获取, 如果是使用checkBox 控件的话, 需要在adapter的getview方法中进行注册, 记录, 使用自定义的适配器可完成

1、在listitem中初始化button的时候,给该button添加一个setTag方法,将此时的索引值传进去,然后在button的onclick事件中调用view的getTag方法,即可将listitem的索引读出来,代码如下:

tagButtonsetTag(position);

此处的tagButton就是定义的button,Position是view里边的位置。

2、初始化button的时候通过setTag方法传入一个item的索引值

private OnClickListener tagButtonOnClick = new OnClickListener() {

public void onClick(View v) {

final int index = (Integer) vgetTag();

以上就是关于WPF 点击ListViewItem中的Button,如何获取选中的是第几行全部的内容,包括:WPF 点击ListViewItem中的Button,如何获取选中的是第几行、如何设置listView的第一个item默认选中、如何为listview 中的item设置获取焦点事件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9522206.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存