カスタムコントロールでは、テンプレート内のTextBlockにStyle(DependencyPropertyとして指定)を使用したいと思います。カスタムコントロールのStyle型のDependencyProperty
MyControl.cs
public static DependencyProperty HeadingStyleProperty =
DependencyProperty.Register("HeadingStyle",
typeof (Style),
typeof (MyControlElement),
new PropertyMetadata(new Style(typeof(TextBlock))));
public Style HeadingStyle {
get { return (Style) GetValue(HeadingStyleProperty); }
set { SetValue(HeadingStyleProperty, value); }
}
MyControl.xaml
<ResourceDictionary ...>
<Style TargetType="local:MyControl">
<Style.Resources>
<!-- Getting error on BasedOn="TemplateBinding -->
<Style TargetType="TextBlock" BasedOn="{TemplateBinding HeadingStyle}" x:Key="Heading" />
</Style.Resources>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBlock Style="{StaticResource Heading}" Text="StyledHeading" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
私はそれが予選タイプ名を持っていないため、コンパイラエラー 'HeadingStyle' メンバが有効ではありません取得します。
私のDPのデータタイプをスタイルからより特定のものに変更する必要がありますか?または、このエラーの原因DPの初期値は、あなたが任意のがそれに結合設定することはできませんのでStyle
はは、DependencyObject
から派生していない、すべての
これはWPFのため、TargetTypeを "TargetType =" {x:Type TextBlock} "を含むように変更する必要があります。" –
これは私の問題を解決しません。私はそれが私のDPで(おそらく私はそれがスタイルであれば別の方法でDPを定義しなければならない...)引き起こされると思います。 – WPFGermany