A certain engineer "COMPLEX"

WPF メモ その4 CustomControlに対してStyleが効かない

What does it mean?


タイトル通り。
CustomControlを作成し、定義したStyleを適用しても反映されない問題が発生。
小一時間悩みました。

What's wrong?


CustomControlのコンストラクタが悪かったようです。
普通は、


public static readonly DependencyProperty OrientationProperty =
DependencyProperty.Register(
"Orientation",
typeof(Orientation),
typeof(TestControl),
new FrameworkPropertyMetadata(
Orientation.Horizontal,
PropertyChangedCallback));

public Orientation Orientation
{
get => (Orientation)GetValue(OrientationProperty);
set => SetValue(OrientationProperty, value);
}

みたいな感じでデフォルト値は、FrameworkPropertyMetadataの第一引数で指定します。

が、コンストラクタにおいて、


public TestControl()
{
this.Orientation = Orientation.Horizontal;
}

と余計なものを書いたのが運の尽き。

カスタムコントロールのStyleでOrientationのPropertyを定義しても適用されませんでした。

なので、コンストラクタ内での値の設定をコメントアウトしたら解決しました。

コメントを残す

メールアドレスが公開されることはありません。

%d人のブロガーが「いいね」をつけました。