我一直在使用同样的代码版本来开发我的应用,并且没有遇到任何问题,但是现在却神秘地收到以下的NullReferenceException
异常:
this.Loaded += delegate {
deleteBrush = new DeleteBrushAdorner( background );
AdornerLayer al = AdornerLayer.GetAdornerLayer( background );
al.Add( deleteBrush ); // null ref here??
};
background
只是一个Border
元素。
我认为可能出现问题的原因有两个:a)切换到.NET 4.0,b)将上述元素(即一个UserControl
)放入一个ItemsControl
中。
奇怪的是,这种情况并不总是发生,而且很难预测何时会发生,因此它并不可靠。
AdornerDecorator
而不是Border
,则会发生同样的事情,尽管我现在根据 MSDN 的说法看到它“为视觉树中下方的元素提供了装饰层”。让我尝试将 Border 包装在 AdornerLayer 中... - devios1OnPropertyChanged
)。我能够在OnRender()
中访问它,但当然AdornerDecorator
也必须在控件模板中。 - Michael Brown