要疯掉了,WPF真是极其之难用啊

饭纲落3DS 2014-01-14 02:02:04
VS2010+WPF, 我只是要实现ListView的焦点跳转功能。

就是一个ListView里面有很多行,不管滚动条处于任意位置,点击一个按钮,就可以跳到指定的行

但是就是实现不了,item始终为null,谁能给个方向,感谢..

private void idBtn_Search_Click(object sender, RoutedEventArgs e)
{
//...
//...
// i就是我要跳转到的行
ListViewItem item = (ListViewItem)idList_Resource.ItemContainerGenerator.ContainerFromIndex(i);
item.Focus();
idList_Resource.SelectedIndex = i;

//...
}
...全文
1508 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
饭纲落3DS 2014-02-12
  • 打赏
  • 举报
回复
很多天前的帖子,结贴把。 回想一下后来好像是用ItemContainerGenerator.ContainerFromItem()来实现的, ItemContainerGenerator.ContainerFromIndex()这个方法始终不行,貌似是VS2010下的bug,或者我用的.Net版本bug? 搞不清楚
WalkOnly 2014-01-27
  • 打赏
  • 举报
回复
你可以使用绑定,然后直接操控数据源就能达到你要的效果。WPF因为多了路由事件和依赖属性,所以在数据传递和消息处理上跟以前的编程模式很不一样,如果你不用这两种方法,还不如直接使用原来的编程工具
yangxk120 2014-01-17
  • 打赏
  • 举报
回复
用绑定的方式很容易实现啊,那有什么难的啊
馒头仔 2014-01-17
  • 打赏
  • 举报
回复
WPF用习惯了真心好用
exception92 2014-01-16
  • 打赏
  • 举报
回复
引用 5 楼 duanzi_peng 的回复:
Lz 可以换成DataGrid显示数据啊。DataGrid有这种跳转功能,

       this.dvServerPackages.SelectedIndex = lastIndex;
                this.dvServerPackages.ScrollIntoView(this.dvServerPackages.SelectedItem);
刚经过测试,ListView也有ScrollIntoView方法,使用方法和DataGrid一样。
exception92 2014-01-16
  • 打赏
  • 举报
回复
Lz 可以换成DataGrid显示数据啊。DataGrid有这种跳转功能,

       this.dvServerPackages.SelectedIndex = lastIndex;
                this.dvServerPackages.ScrollIntoView(this.dvServerPackages.SelectedItem);
hellocondition 2014-01-15
  • 打赏
  • 举报
回复
你实现的方法有问题,应该用绑定的方法来实现,将你的数据项中添加一个bool变量(数据项需要用类来实现,并且继承了INotifyChanged接口),让这个变量值改变时调用INotifyChanged接口,将这个bool变量与ListViewItem的IsSelected绑定,你只需要修改数据项中的bool变量值就可以选中对应的ListViewItem了。
Bonjour-你好 2014-01-14
  • 打赏
  • 举报
回复
最好提供测试数据。
杨门剑侠 2014-01-14
  • 打赏
  • 举报
回复
纠正一下,WPF不难用,而且很好用。
杨门剑侠 2014-01-14
  • 打赏
  • 举报
回复
你先用这个获取键盘焦点试试 listview的Item获取焦点很难。 Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Render,new Action(() => Item1.Focus()));
在Windows系统中,notepad.exe(记事本)是一个“经典的”、“简洁的”文本编辑器。这个软件,没有华丽的外观,也没有繁杂的功能,仅仅是一个文本编辑小软件。虽然经过Windows系统数十年的变换,但它却保持着永恒姿态,数十年来几乎不曾改变过。曾经,VS中的经典DEMO中,就有它的身影,一个新建的项目,就藏有一个新建的“记事本”。然而,在WPF的项目中,“记事本”却消失的无影无踪,也许是很容易实现,也许是为了革新,而不愿再传承“经典”。确实,使用WPF技术再次让“记事本”复活,确实也是一件非常容易的事情。但是,如果,使用WPF技术,再搭配当下非常流行的MVVM模式呢?复活“记事本”的难度却陡然上升至很多WPF程序员为之默默叹气。而,MVVM模式是掌握WPF的最顶级技术,MVVM模式拥有的无尽的优势,让WPF相对于过往的编程模式来说,是一种革命性的创新,从而也成为大中型WPF项目中必须的模式。但,学习难度。。。。。。在这个《WPF记事本开发详解》的课程中,赵老师带领你在WPF中,从零开始一步步构建MVVM模式,直到让你亲自以WPF+MVVM的方式,让这个经典的“记事本”软件从你的手中“复活”。在课程中,赵老师会详细讲解WPF和MVVM中的各种技巧,让你从此爱上WPF+MVVM编程。

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧