我有一个ItemsControl一个ScrollViewer。在ItemsControl项被扩展到基本上包含一个DataTemplateAdorner

现在的问题是,滚动时,所述Adorner的视觉儿童是ScrollViewer外部可见。可以说,我从滚动水平偏移0到100,Adorner向左移动的视觉儿童和可见旁边ScrollViewer,虽然它们应该被隐藏。在ClipToBounds设定ItemsControlScrollViewer不起作用。

我明白,Adorner是z顺序明智所有元件上方呈现,但它们确实不应该在这样的情况下,与所述ScrollViewer可见。顺便装饰Element行为像预期的和不可见通过ScrollViewer

有没有简单的方法来“夹子”的Adorners,让他们只在可见滚动区域可见?

谢谢, 安德烈

有帮助吗?

解决方案

在以下螺纹卫轴重新模板的的ScrollViewer所以按钮的装饰器被约束。

实现选择高亮 - 建议请

此致大卫

其他提示

含控制上的设置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();

可以在堵塞这个到任何装饰器,边界是已经可用作为元件的一部分。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top