gpt4 book ai didi

c# - GetAdornerLayer 神秘地返回 null

转载 作者:可可西里 更新时间:2023-11-01 08:57:19 25 4
gpt4 key购买 nike

我一直在为我的应用程序的多个版本使用相同的代码,没有任何问题,但我现在神秘地收到了包含以下内容的 NullRerefenceException:

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.

奇怪的是,这种情况不会一直发生,而且很难预测何时会发生,所以它不可靠。

最佳答案

在我的例子中,我有一个基于 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>

关于c# - GetAdornerLayer 神秘地返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3039066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com