WPF Adorner剪辑

And*_*rej 8 wpf clipping adorner

我有ItemsControl一个ScrollViewer.其中的项目ItemsControl扩展为DataTemplate基本上由a 组成的项目Adorner.

现在的问题是,当滚动时,视觉儿童在Adorner外面可见ScrollViewer.让我们说我从水平偏移0滚动到100,Adorner向左移动的视觉子项并且在旁边可见ScrollViewer,尽管它们应该被隐藏.设置ClipToBoundsItemsControlScrollViewer不起作用.

我理解,这Adorner是在z顺序上呈现在所有元素之上,但它们确实不应该在诸如此类的情况下可见ScrollViewer.Element通过这种方式装饰的行为与预期的一样,并且不可见ScrollViewer.

是否有任何简单的方法来"剪辑" Adorners,以便它们仅在可见滚动区域中可见?

谢谢,Andrej

Jiř*_*ála 8

ClipToBounds在包含控件上设置是不够的.您也必须设置装饰者的IsClipEnabled属性.


hwi*_*ers 2

当子类化 WPFToolkit DataGrid 以在当前单元格周围绘制装饰器时,我遇到了同样的问题。

ScrollViewer 的内容由 ScrollContentPresenter 实例呈现。ScrollContentPresenter 有自己的装饰器层,可以通过 ScrollContentPresenter.AdornerLayer 属性访问该装饰器层。

我发现如果我将装饰器添加到该层,它会正确剪辑。