2017-04-19 2 views
0

so versuche ich, ein Programm zu machen, die Benutzer einfache Programme mit Modulen mit verschiedenen Funktionen in WPF erstellen kann.WPF - Wie Linien zwischen benutzerdefinierten Steuerelemente zeichnen programmatisch

Ich habe für meine Module benutzerdefinierte Steuerelemente erstellt, die wie folgt aussehen:

<Border Height="75" Width="150" BorderThickness="1" BorderBrush="Black"> 
    <Grid Background="Gray" Height="75" Width ="150"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="1*"/> 
      <RowDefinition Height="2*"/> 
     </Grid.RowDefinitions> 
     <Label Content="Double" FontSize="12" Grid.Row="0" HorizontalContentAlignment="Center" Background="Aquamarine"/> 
     <Grid Grid.Row="1"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition/> 
       <ColumnDefinition Width="3*"/> 
       <ColumnDefinition/> 
      </Grid.ColumnDefinitions> 
      <Button Name="IncomingConnection" Height="15" Width="15" Background="Black" Margin="5" VerticalAlignment="Top" HorizontalAlignment="Left"/> 

      <Button Name="OutgoingConnection" Grid.Column="2" Height="15" Width="15" VerticalAlignment="Top" Background="Black" Margin="5" HorizontalAlignment="Right"/> 
      <Button Name="OutgoingData" Grid.Column="2" Height="15" Width="15" VerticalAlignment="Bottom" Background="Aquamarine" Margin="5" HorizontalAlignment="Right"/> 
     </Grid> 
    </Grid> 
</Border> 

Anyways, ich möchte auf eine dieser Tasten (incomingConnection oder outgoingConnection) klicken zu können, und haben eine Linie verbinden die zwei Knöpfe.

Weitere Informationen: Die benutzerdefinierten Steuerelemente werden alle in den Thumbs platziert, sodass sie herumgeschleift werden können. Alles ist auf einer Leinwand. Ich möchte keine Linie zwischen den Steuerelementen, sondern zwischen den Schaltflächen auf den Steuerelementen erstellen.

Vielen Dank!

+0

Was hast du selbst versucht? Haben Sie einige [Befehle] implementiert (http://stackoverflow.com/questions/7660547/how-to-create-bindable-commands-in-custom-control)? –

+0

Meistens nur Forschung, alles, was ich gefunden habe, das funktionieren könnte, scheint für die Kontrolle als Ganzes exklusiv zu sein, und nicht für diesen spezifischen Knopf. Ich habe versucht, den Punkt des Knopfes zu bekommen, als er gedrückt wurde, aber das hat nicht funktioniert, nachdem das Steuerelement anderswo gezogen wurde. –

Antwort

0

Ich hätte eine Klasse für die Zeilen, die die X- und Y-Koordinaten für beide Endpunkte enthält. Ich würde eine Instanz für jede Zeile in eine Liste auf dem Ansichtsmodell einfügen. Verwenden Sie dann eine ItemsControl gebunden an diese Eigenschaft mit einer Canvas als Vorlage. Sie können dann ein WPF Line Steuerelement als das ItemTemplate für das ItemsControl verwenden. Sie können des Steuerelements X1, Y1, X2 und Y2 an die Endpunkteigenschaften der Linienklasse binden, die am Anfang erstellt wurde.

Mit diesem Setup müssen Sie nur Instanzen Ihrer Zeilenklasse zur Liste hinzufügen und sie werden automatisch auf der Canvas angezeigt.

Verwandte Themen