/ Błąd / TemplateBinding - wpf, kontrolki użytkownika, kontrolki niestandardowe, wiązanie szablonów

Błąd TemplateBinding - wpf, kontrolki użytkownika, niestandardowe elementy sterujące, szablony

Opracowuję formant niestandardowy, który ma właściwość zależności

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

Problem pojawia się, gdy próbuję ustawić ControlTemplate mojej kontroli z zewnątrz jak xaml

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

To brzmi jak „XamlParseException: podanego klucza nie było w słowniku” w ciągu z TemplateBinding powyżej. Co może być nie tak?

Odpowiedzi:

1 dla odpowiedzi № 1

Tęskniłeś {x:Type } deklaracja

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

Oznacza to, że podajesz ciąg do TargetType zamiast Type

Rozszerzenie znaczników x: Type zapewnia zachowanie konwersji z ciągu znaków dla właściwości, które przyjmują typ Type. Dane wejściowe są typu XAML.

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


1 dla odpowiedzi nr 2

Właśnie popełniłem błąd w typie właściciela DependencyProperty. Powinien to być SmartPrimitive, a nie SmartCanvas. Ale ... Wyjątek WPF może być bardziej informacyjny.