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 № 1Du 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.