2014-01-13 16 views
0

此问题是一些最佳实践/分享您的经验/帮助我发现针对特定方案的解决方法。如何处理/解决方法焦点 - 窃取托管其自己的扩展程序/列表的自定义ListBoxItems

情况是一个列表框,其中有一堆项目表示相应图表中的形状;某些形状具有子形状(它们是分组形状的容器)。

所需的功能是让列表框能够滚动浏览所有形状,并通过单个或多个选择(并且所选形状可通过属性网格编辑)选择任何形状。

此外,每个形状可以拖放到列表框中以改变它的z顺序。

这是目前所有的工作,使用telerik控件,但有一些恼人的行为,我只能通过创建其他恼人的行为来解决。

我想知道是否有人已经解决了此类问题,或者根据列表框中嵌套列表的情况分享了一些东西。

我将列出一些问题:

  1. 如果副外形列表(容器列表框项目嵌套列表)本身就是一个列表框,或者它是否具有可编辑的文本框,它需要有,单击这些文本框不会选择主列表框项目(包含形状)。
  2. 如果点击错误的位置,单击并拖动时不会发生单击这些子形状的情况。
  3. 列表框滚动得到“破坏”(即,假设扩展的嵌套列表有20个项目,并且整个列表框只能在UI中可视化地显示15个,所需的功能是列表框滚动通过子项目,但它只是跳到下一个主要项目,所以如果有太多的话,你永远不会看到所有的子项目)。
    1. 令人讨厌的是,仅在列表框项目上单击/编辑嵌套控件后,外侧列表框项目上出现焦点突出显示,但实际上并未选择该项目。只有鼠标悬停,选择其他内容,然后鼠标悬停在高亮项目上方,焦点才会再次消失。

我相信大部分读者希望看到的代码,但在这一点上,我在一个测试项目测试不同的配置这一点,它只是,里面一个列表框的项目里面基本的ItemsControl列表框,其中项目控件上有一些文本框。

简而言之,它是“不可思议的”,我想知道是否有更简单的WPF或telerik控件提供来处理我想要做的事情。

我已经考虑将整个列表框视为树视图,但是我们需要对这些项目进行多次选择,并且这种方法会涉及重做大量工作和数据模板。

我怀疑我需要阻止一些事件并做一些其他的手动事件处理,但这似乎很混乱,应该有一些更优雅的解决方案,包括焦点或触发器,可能通过XAML完成。

我只是想知道是否有其他人已经找到了这种情况下的工作设置,允许选择主要列表框项目以及编辑嵌套列表中的控件。

任何帮助,将不胜感激,

谢谢。

+0

也许http://stackoverflow.com/q/14522135/620360对你很有用。 – LPL

+0

我会咬下子弹,并执行以下操作之一:将其转换为树形视图,就像您在帖子中说的那样,或者实际上只是将所有项目平铺到一个列表中(可能使用数据模板添加白色/ splace/emulate a像树状视图缩进)。我会牢记几件事情:1)代码隐藏是邪恶的 - 它会使你变得疯狂,而且它似乎已经是可能了。一旦进入阻塞事件和重新路由重点业务,您将永远不会离开。 2)重新思考UI设计通常比让WPF做它不想做的事更容易。 – Andrew

+0

谢谢@LPL。我通过在ListBoxItem的最右侧使用一个RadDropDownButton来解决这个问题,它有一个内部列表来显示,并在下拉内容中显示该列表。 – user2880413

回答

0

通过更改要求解决(下拉按钮包含在容器列表框项目中以显示内部列表 - 不会干扰选择,并且很容易看到哪个区域可以选择,哪个区域可以显示内部信息/列表) 。