I have an ItemsControl
in a ScrollViewer
. The items in the ItemsControl
are expanded to a DataTemplate
which basically consists of an Adorner
.
Now the problem is, when scrolling, the Visual Children of the Adorner
are visible outside the ScrollViewer
. Lets say I scroll from the Horizontal Offset 0 to 100, the Visual Children of the Adorner
move to the left and are visible next to the ScrollViewer
, although they should be hidden. Setting ClipToBounds
on the ItemsControl
or the ScrollViewer
does not work.
I understand, that Adorner
are rendered above all elements z-order wise, but they really shouldn't be visible in such cases as with the ScrollViewer
. The adorned Element
by the way behaves like expected and is not visible through the ScrollViewer
.
Is there any easy way to "clip" the Adorner
s, so that they are only visible in the visible scroll area?
Thanks, Andrej
Setting ClipToBounds
on the containing control is not enough. You must set the adorner's IsClipEnabled
property too.
I've encountered the same problem when subclassing the WPFToolkit DataGrid to draw an adorner around the current cell.
The content of the ScrollViewer is rendered by a ScrollContentPresenter instance. ScrollContentPresenter has its own adorner layer, which is accessible through the ScrollContentPresenter.AdornerLayer property.
I found that my adorner correctly clips if I add it to that layer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With