允许列表框中的项目选择指示器覆盖 Silverlight 中的所有项目
我有一个 ListBox
,它使用 WrapPanel
作为其 ItemsPanel
、自定义 ItemTemplate
和自定义 ItemContainerStyle
。 ItemContainerStyle 的模板包含一个选择框,当选择某个项目时会显示该选择框。图形设计者希望此选择框与 ListBox 中的同级项目重叠,就像覆盖一样。
我尝试的第一件事是将 ItemContainer 的 Canvas.ZIndex
属性设置为 Selected 状态。这似乎没有效果。然后我读到列表项可能包含在 ContentPresenter
中,因此我创建了一个附加属性来更改项目父级的 ZIndex,但后来我发现 Silverlight 故事板不允许您为自定义动画设置动画附加属性。
有谁知道我们可以使用什么技术来达到我们想要的效果?
I have a ListBox
that uses a WrapPanel
for its ItemsPanel
, a custom ItemTemplate
, and a custom ItemContainerStyle
. The ItemContainerStyle's template contains a selection box that shows up when an item is selected. The graphics designer would like this selection box to overlap sibling items in the ListBox like it's an overlay.
The first thing I tried was setting the Canvas.ZIndex
property of the ItemContainer in the Selected state. That did not seem to have an effect. Then I read that list items might be wrapped inside of a ContentPresenter
, so I created an attached property that changes the ZIndex of an item's parent, but then I found out Silverlight storyboards don't let you animate custom attached properties.
Does anyone know of a technique we can use to achieve the effect we desire?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我找到了解决方案。基本上,我创建了一个附加属性,该属性在任何选择器(包括列表框)上设置事件处理程序,以便其选择发生更改。当它发生变化时,代码会迭代所有项目容器,根据容器是否代表所选项目来调整
Canvas.ZIndex
:I found a solution. Basically, I created an attached property that sets up an event handler on any
Selector
(includingListBox
) for when its selection changes. When it changes, the code iterates through all of the item containers, adjusting theCanvas.ZIndex
based on whether the container represents the selected item: