dev*_*os1 10 c# wpf adorner adornerlayer nullreferenceexception
我一直在为我的应用程序的几个版本使用相同的代码而没有任何问题,但我现在神秘地接受NullRerefenceException以下内容:
this.Loaded += delegate {
deleteBrush = new DeleteBrushAdorner( background );
AdornerLayer al = AdornerLayer.GetAdornerLayer( background );
al.Add( deleteBrush ); // null ref here??
};
Run Code Online (Sandbox Code Playgroud)
background只是一个Border元素.
我对可能导致它的原因的两点看法是:a)切换到.NET 4.0,以及b)将上述元素(即a)的实例UserControl放在一个ItemsControl.
奇怪的是,这并不是一直发生的,而且很难预测何时会发生,所以它不可靠.
Flo*_*Lim 11
我知道这是一个老问题,但我今天遇到了这个问题.
在我的情况下,我有一个基于的类,Window并GetAdornerLayer()返回null.原来ControlTemplate,我的派生类没有包含AdornerDecorator.添加它作为ControlTemplate解决问题的顶级.
<Style TargetType="my:MyWindow" BasedOn="{StaticResource {x:Type Window}}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="my:MyWindow">
<AdornerDecorator>
<DockPanel ...>
</DockPanel>
</AdornerDecorator>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
AdornerLayer.GetAdornerLayer的文档指定:
如果未找到任何装饰层,则该方法返回null.
所以我的猜测是没有装饰层...你有理由相信不应该这样吗?您目前依赖于什么保证视觉树中会有一个装饰层?
| 归档时间: |
|
| 查看次数: |
8646 次 |
| 最近记录: |