【发布时间】:2011-02-15 23:25:08
【问题描述】:
我有一个场景,我想在 Silverlight 3 的 DataGrid 中显示分层数据,同时标题行仍然具有标准的单元格集并且是可编辑的。用户需要能够折叠和展开行以隐藏子行。
我通过在每个父行上都有一个按钮来实现这一点,该按钮看起来像折叠或展开字形,具体取决于其状态。单击此按钮可操作其子行的数据项上的属性。每行的可见性都绑定到数据项的此属性。
虽然它确实存在性能问题,但网格渲染的列比它需要的多。
我现在的问题是,当用户向上或向下敲击键盘时,他们能够导航到隐藏的行。
例如,如果我有这样的结构
1 个父级(展开,可见)
1a(可见)
1b(可见)
2 父级(折叠,可见)
2a(隐藏)
3 父级(展开,可见)
3a(可见)
如果我选择了 [2 Parent] 并且我点击了键盘上的向下箭头,我希望选择转到 [3 Parent] 但它会转到 [2a],即使 [2a] 的行可见性是设置为 Visibility.Collapsed。
我希望能够拦截键盘事件(通过诸如不存在的 PreviewKeyDown 事件之类的事件)并自己处理它,或者找到某种方法来欺骗 DataGrid 的内部以移动到正确的项目。
在这一点上,我相当投入地调整行可见性以隐藏这些项目。
有什么想法吗?
【问题讨论】:
标签: silverlight datagrid navigation