問題
ListBoxの中身をゴースト(これが正しいかは知らない)付きでドラッグ・ドロップで移動させようとしたときに
ぶつかった問題。
AdornerLayer.GetAdornerLayerの戻り値がnullになる。
解決方法
サンプルで作ったときは動いてたのに、本番環境に持って行った瞬間動かなくなった。
何が違うのかサンプルと比較すると本番環境ではBaseWindowが存在する。
試しにコンストラクタの
DefaultStyleKeyProperty.OverrideMetadata(typeof(BaseWindow), new FrameworkPropertyMetadata(typeof(BaseWindow)));
をコメントアウトするとAdornerLayer.GetAdornerLayerの戻り値がnullではなくなった!
ってことは、BaseWindowGeneric.xamlの中身がおかしい。
結局、下記のようにして解決
<Style TargetType="{x:Type z:BaseWindow}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type z:BaseWindow}">
<Grid Background="{TemplateBinding Background}">
<AdornerDecorator> ★これ追加
<ContentPresenter/>
</AdornerDecorator> ★これ追加
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>