Ich habe einen kundenspezifischen Knopf mit einem Winkel DependencyProperty:Databinding in Control DependencyProperty funktioniert, aber nach wie vor wirft Fehler
public static readonly DependencyProperty AngleProperty = DependencyProperty.Register(
"Angle",
typeof(float),
typeof(TriangularButton),
new FrameworkPropertyMetadata(0f, FrameworkPropertyMetadataOptions.AffectsRender));
public float Angle
{
get { return (float)GetValue(AngleProperty); }
set { SetValue(AngleProperty, value); }
}
Im Control ich von unten binden möchten. Ich habe mehrere Möglichkeiten ausprobiert (siehe unten) und jeder funktioniert, aber ich bekomme einen System.Windows.Data Error. Wie werde ich es loswerden?
Was ich versucht:
<Button.Template>
<ControlTemplate TargetType="Button">
<Path ...>
<Path.RenderTransform>
<RotateTransform Angle="{Binding Angle, RelativeSource={RelativeSource TemplatedParent}}"/>
</Path.RenderTransform>
</Path>
</ControlTemplate>
</Button.Template>
Dann bekomme ich:
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=Angle; DataItem=null; target element is 'RotateTransform' (HashCode=55197304); target property is 'Angle' (type 'Double')
Wenn ich dies tun:
<Button.Template>
<ControlTemplate TargetType="Button">
<Path ...>
<Path.RenderTransform>
<RotateTransform Angle="{Binding Angle, RelativeSource={RelativeSource AncestorType=Button}}"/>
</Path.RenderTransform>
</Path>
</ControlTemplate>
</Button.Template>
Dann bekomme ich:
EDITSystem.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.Button', AncestorLevel='1''. BindingExpression:Path=Angle; DataItem=null; target element is 'RotateTransform' (HashCode=24935945); target property is 'Angle' (type 'Double')
:
danken this answer ich die Ursache herausgefunden, ist wahrscheinlich, weil der Knopf zunächst nicht sichtbar ist. Wenn ich den Button an einer Stelle platziere, wo er anfänglich sichtbar ist, verschwindet der Fehler. Gibt es eine Möglichkeit, den Fehler loszuwerden, wenn ich den Button irgendwo benutze, der anfänglich nicht sichtbar ist?
Der DataContext ist der Button selbst. Die DependencyProperty befindet sich im Code dahinter. – gartenriese
@gartenriese gib mir eine zweite –
Ich habe vielleicht die Ursache für den Fehler gefunden, siehe die Bearbeitung. Ich weiß jedoch immer noch nicht, wie ich es loswerden soll. – gartenriese