1
シェイダーを使用してレンダリング方法を変更するクラスがあります。シェーダエフェクトの塗りとアウトラインのプロパティをベースコントロールの塗りとアウトラインのプロパティにバインドしたいと思います。WPFバインディングプロパティを持つルートコントロールテンプレートの効果を設定する
以下のxamlは効果がありません。シェーダは機能しますが、プロパティはバインドされていません。
<Style TargetType="{x:Type local:RCTLabel}">
<Setter Property="Effect">
<Setter.Value>
<effects:SpriteFontEffect Fill="{Binding Fill}" Outline="{Binding Outline}"/>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:RCTLabel}">
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
以下のコードは機能しますが、コード内ではなくxaml内のコントロールをバインドしたいと考えています。
SpriteFontEffect shader;
public RCTLabel() {
shader = new SpriteFontEffect();
Effect = shader;
}
private static void OnFillChanged(object sender, DependencyPropertyChangedEventArgs e) {
var element = (RCTLabel)sender;
element.shader.Fill = element.Fill;
}
private static void OnOutlineChanged(object sender, DependencyPropertyChangedEventArgs e) {
var element = (RCTLabel)sender;
element.shader.Outline = element.Outline;
}
ありがとうございます!欠けているのは、RCTLabel AncestorTypesの前にある 'local:'だけです。 –