LoginSignup
1
1

More than 5 years have passed since last update.

AdornerLayer.GetAdornerLayerの戻り値がnullになる

Posted at

問題

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>
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1