В пользовательском элементе управления я хотел бы использовать стиль (заданный как DependencyProperty) для TextBlock в моем шаблоне.DependencyProperty типа Style в пользовательском контроле
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' не является допустимым, поскольку он не имеет названия квалификационного типа.
Должен ли я изменить DataType моего DP из стиля на более конкретный? Или что вызывает эту ошибку. Начальное значение DP устанавливаются в стиль для TargetType TextBlock ...
Это WPF, вам может потребоваться изменить TargetType, чтобы включить type, 'TargetType = "{x: Type TextBlock}" ' –
, это не исправляет мою проблему. Я думаю, что это вызвано в моем DP (возможно, мне нужно определить DP по-другому, если это стиль ...). – WPFGermany