Wpf 列表框上的AdornerLayer未重新绘制

Wpf 列表框上的AdornerLayer未重新绘制,wpf,Wpf,在我的应用程序中,我使用来自的CircularProgressBar 在一个应用程序中,我把它放在我从Image element获得的AdornerLayer上,它按预期工作(即,该元素通过计时器驱动的旋转来设置动画) 在另一个应用程序中,我将它放在从ListBox元素获取的AdornerLayer上,它会显示出来,但不会设置动画。当我调整窗口大小时,它确实会被设置动画,我认为这意味着由于某种原因,当元素更改时,AdornerLayer不会被重新绘制(除非我强制刷新,例如通过调整窗口大小) 当我

在我的应用程序中,我使用来自的CircularProgressBar

在一个应用程序中,我把它放在我从Image element获得的AdornerLayer上,它按预期工作(即,该元素通过计时器驱动的旋转来设置动画)

在另一个应用程序中,我将它放在从ListBox元素获取的AdornerLayer上,它会显示出来,但不会设置动画。当我调整窗口大小时,它确实会被设置动画,我认为这意味着由于某种原因,当元素更改时,AdornerLayer不会被重新绘制(除非我强制刷新,例如通过调整窗口大小)

当我按住Alt键时,它也会正确地设置动画(我没有理论来解释这一点)

在这两种情况下,我都使用以下代码创建装饰器:

        var adornerLayer = AdornerLayer.GetAdornerLayer(ListBoxDirOrImageElement);
        if (null == adornerLayer)
            return;
        var vb = new Viewbox();
        vb.Width = 16;
        vb.Height = 16;
        vb.Child = new CircularProgressBar();
        var adorner = new UpperRightAdorner(ListBoxDir, vb);
        adornerLayer.Add(adorner);
到目前为止,我注意到这两个程序之间的唯一区别是我所修饰的元素(适用于图像,不适用于列表框)

有没有想过为什么会这样,以及如何解决这个问题,或者其他一些解释,说明为什么ListBox上的装饰程序没有被重新绘制/设置动画