题
我有一个ItemsControl
一个ScrollViewer
。在ItemsControl
项被扩展到基本上包含一个DataTemplate
的Adorner
。
现在的问题是,滚动时,所述Adorner
的视觉儿童是ScrollViewer
外部可见。可以说,我从滚动水平偏移0到100,Adorner
向左移动的视觉儿童和可见旁边ScrollViewer
,虽然它们应该被隐藏。在ClipToBounds
设定ItemsControl
或ScrollViewer
不起作用。
我明白,Adorner
是z顺序明智所有元件上方呈现,但它们确实不应该在这样的情况下,与所述ScrollViewer
可见。顺便装饰Element
行为像预期的和不可见通过ScrollViewer
。
有没有简单的方法来“夹子”的Adorner
s,让他们只在可见滚动区域可见?
谢谢, 安德烈
解决方案
其他提示
含控制上的设置ClipToBounds
是不够的。您必须设置装饰器的IsClipEnabled
财产了。
子类WPFToolkit数据网格绘制当前小区周围的装饰器时我遇到同样的问题。
的的ScrollViewer的内容由ScrollContentPresenter实例呈现。 ScrollContentPresenter有它自己的装饰器层,其是通过所述ScrollContentPresenter.AdornerLayer属性进行访问。
我发现,如果我将其添加到我的层装饰器正确片段。
我的解决办法是推剪辑区域到绘图上下文,使得不管我需要,并弹出限幅在最后,如下所示:
drawingContext.PushClip(new RectangleGeometry(new Rect(0, 0, this.AdornedElement.RenderSize.Width, this.AdornedElement.RenderSize.Height)));
// continue drawing
drawingContext.Pop();
可以在堵塞这个到任何装饰器,边界是已经可用作为元件的一部分。
不隶属于 StackOverflow