/ Erro / TemplateBinding - wpf, controles de usuário, controles personalizados, vinculação de modelo

Erro TemplateBinding - wpf, controles de usuário, controles personalizados, vinculação de modelo

Eu desenvolvo um controle personalizado que tem uma propriedade de dependência

public static readonly DependencyProperty StateBorderBrushProperty =
DependencyProperty.Register("StateBorderBrush", typeof(Brush), typeof(SmartCanvas),
new FrameworkPropertyMetadata(Brushes.Transparent,
FrameworkPropertyMetadataOptions.None));

O problema surge quando eu tento definir ControlTemplate do meu controle de fora xaml como

<ControlTemplate TargetType="controls:SmartPrimitive">
<Grid>
<ContentPresenter/>
<Border BorderBrush="{TemplateBinding StateBorderBrush}" BorderThickness="2"/>
</Grid>
</ControlTemplate>

Parece "XamlParseException: a chave fornecida não estava presente no dicionário" na string com TemplateBinding acima. O que pode estar errado?

Respostas:

1 para resposta № 1

Você perdeu o {x:Type } declaração

<ControlTemplate TargetType="{x:Type controls:SmartPrimitive}">
<Grid>
<ContentPresenter/>
<Border BorderBrush="{TemplateBinding StateBorderBrush}" BorderThickness="2"/>
</Grid>
</ControlTemplate>

Isso significa que você está fornecendo uma string para o TargetType em vez de um tipo

A extensão de marcação x: Type fornece um comportamento de conversão de string para propriedades que usam o tipo Type. A entrada é do tipo XAML.

http://msdn.microsoft.com/en-us/library/ms753322%28v=vs.110%29.aspx


1 para resposta № 2

Acabei de escrever errado com o tipo do proprietário DependencyProperty. Deve ser SmartPrimitive, não SmartCanvas, mas ... A exceção do WPF pode ser mais informativa.