J'ai deux boutons, et j'ai besoin de les relier avec une ligne. Je lie les coordonnées de la ligne aux positions des boutons.La liaison ne fonctionne pas ... (WPF) "x: Nom" problème?
J'ai besoin d'ajouter cette liaison par code.
En XAML ce travail très bien comme ceci:
<Button x:Name="button1" Width="10" Height="10" Canvas.Left="150" Canvas.Top="150"/>
<Button x:Name="button2" Width="10" Height="10" Canvas.Left="250" Canvas.Top="100"/>
<Line x:Name="testLine" Stroke="Black"
X1="{Binding ElementName=button1, Path=(Canvas.Left)}"
Y1="{Binding ElementName=button1, Path=(Canvas.Top)}"
X2="{Binding ElementName=button2, Path=(Canvas.Left)}"
Y2="{Binding ElementName=button2, Path=(Canvas.Top)}"/>
Maintenant, dans le code, j'ai essayé:
Binding b = new Binding("(Canvas.Left)");
b.ElementName = "button1";
testLine.SetBinding(System.Windows.Shapes.Line.X1Property, "(Canvas.Left)");
mais cela ne fonctionne pas ... (
EDIT :
Il existe un problème lors de la création dynamique du estion:
Button button1 = new Button();
Canvas.SetLeft(button1, 50);
Canvas.SetTop(button1, 50);
button1.Name = "be1";
mainCanvas.Children.Add(button1);
Button button2 = new Button();
Canvas.SetLeft(button2, 150);
Canvas.SetTop(button2, 150);
button2.Name = "be2";
mainCanvas.Children.Add(button2);
Binding b1 = new Binding() { ElementName = "be1", Path = new PropertyPath("(Canvas.Left)") };
Binding b2 = new Binding() { ElementName = "be2", Path = new PropertyPath("(Canvas.Left)") };
testLine.SetBinding(System.Windows.Shapes.Line.X1Property, b1);
testLine.SetBinding(System.Windows.Shapes.Line.X2Property, b2);
Il semble que « BE1 » n'existe pas ou je ne sais pas quoi ...
button1.RegisterName(button1.Name, button1); //does not help, error...
Je pense que le problème est avec le nom dynamique, voir éditer ... – serhio
ouais ... vraiment cool. Merci!! – serhio
Juste pour résoudre votre problème de "nom dynamique", vous devriez faire mainCanvas.RegisterName ("be1", button1) au lieu d'appeler RegisterName sur le bouton. – ASanch