Hallo,
ich möchte eine Datenbindung zwischen 2 Dependency Properties realisieren, hier zwischen QuadraticBezierSegment.Point1Property (Ziel) und ControlPointProperty (Quelle). Ich habe zurzeit folgenden Code, bei dem ich nicht weiß, was ich falsch mache:
class DataBindingTest : DependencyObject
{
// Dependency Property
public static readonly DependencyProperty ControlPointProperty;
// .NET wrapper
public Point ControlPoint
{
get { return (Point)GetValue(DataBindingTest.ControlPointProperty); }
set { SetValue(DataBindingTest.ControlPointProperty, value); }
}
// Register Dependency Property
static DataBindingTest()
{
DataBindingTest.ControlPointProperty = DependencyProperty.Register("ControlPoint", typeof(Point), typeof(DataBindingTest));
}
public DataBindingTest()
{
QuadraticBezierSegment bezier = new QuadraticBezierSegment();
// Binding
Binding myBinding = new Binding();
myBinding.Source = ControlPointProperty;
BindingOperations.SetBinding(bezier, QuadraticBezierSegment.Point1Property, myBinding);
// Test Binding: Change the binding source
ControlPoint = new Point(1, 1);
MessageBox.Show(bezier.Point1.ToString()); // gives (0,0), should be (1,1)
}
}
Schonmal vielen Dank für jeden Tipp 😃
versuchst doch mal mit dem Vorschlag von MSDN:
//make a new source
MyData myDataObject = new MyData(DateTime.Now);
Binding myBinding = new Binding("MyDataProperty");
myBinding.Source = myDataObject;
myText.SetBinding(TextBlock.TextProperty, myBinding);
und Warum ruftst du BindingOperations.Setbinding(...) auf ?
hallo meisteralex,
danke für deine antwort.
habs nun, myBinding.Source muss das sourceobjekt sein, nicht die sourceproperty (die wird per path bzw. konstruktor angegeben). QuadraticBezierSegment stellt keine SetBinding Methode zur Verfügung (da es nicht von Framework oder was das nohmals ein musste erbt), daher BindingOperations.Setbinding(...)