/ / TemplateBinding-Fehler - Wpf, Benutzersteuerelemente, benutzerdefinierte Steuerelemente, Vorlagenbindung

TemplateBinding error - wpf, Benutzersteuerelemente, benutzerdefinierte Steuerelemente, Vorlagenbindung

Ich entwickle ein benutzerdefiniertes Steuerelement mit einer Abhängigkeitseigenschaft

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

Das Problem entsteht, wenn ich versuche, ControlTemplate meines Steuerelements von außen wie xaml zu setzen

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

Es klingt wie "XamlParseException: Der angegebene Schlüssel war nicht im Wörterbuch vorhanden" in der Zeichenfolge mit TemplateBinding oben. Was könnte falsch sein?

Antworten:

1 für die Antwort № 1

Du hast das verpasst {x:Type } Erklärung

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

Dies bedeutet, dass Sie anstelle von Type einen String an den TargetType übergeben

Die Markierungserweiterung "x: Type" stellt ein Verhalten zur Umwandlung von Zeichenfolgen für Eigenschaften bereit, die den Typ "type" annehmen. Die Eingabe ist ein XAML-Typ.

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


1 für die Antwort № 2

Ich habe gerade mit dem Typ des DependencyProperty-Besitzers falsch geschrieben. Es sollte SmartPrimitive sein, nicht SmartCanvas. Aber ... WPF-Ausnahmebedingungen könnten informativer sein.