Frage

Ich habe zwei benutzerdefinierte Steuerelemente, die mit einem Knoten und die Steuerung analog sind, die Verbindungen zwischen den Knoten zieht.

Ich mag beiden Kontrollen so viel in XAML wie möglich geschrieben haben. Die Verknüpfung speichert beide Knoten als Abhängigkeitseigenschaften, und ich verwende Datenbindung die Linie zwischen den Knoten zu bewegen, wenn die Knoten bewegen.

Es wäre toll, die Lage sein, einen anderen Wert der Linie zu ändern, zum Beispiel der Strichbreite, abhängig von der Entfernung zwischen den beiden Knoten. So ist die Eigenschaft muss, wenn entweder Knoten bewegt aktualisieren, und ich kann nicht ganz meinen Kopf um, wie das funktionieren würde.

Wer hat irgendwelche Ideen?

War es hilfreich?

Lösung

Sie können versuchen, so etwas zu tun:

  1. wie in früheren Post definiert eine Breite, Schlaganfall (was auch immer Sie brauchen) Eigentum auf Ihrer Linkklasse
  2. einen mehrbindigen zu dieser Eigenschaft, vorbei an Ihre zwei Knoten auf die Bindung angewendet definieren es sollte wie folgt aussehen:
  


   
   
  

  1. Implementieren Schnittstelle IMultiValueConverter, die im Grunde berechnen, wie der Hub wie basierend auf dem Abstand zwischen dem Knoten aussehen soll.

  2. in XAML-Instanz des Konverter erstellen, und fügen Sie sie mehrbindigen des Converter-Eigenschaft.

Der Vorteil dieser Lösung ist, dass Sie ziemlich klar Klassenmodell haben und jede Klasse hat einfache Aufgaben. darüber hinaus später, können Sie Ihre Software-Klasse konfigurieren zusätzliche Fälle zu unterstützen, ohne Knotenklasse zu berühren, die einfach bleibt und einfach Knoten für die Anzeige entworfen.

in der Regel, wenn Sie mehrere Eigenschaftswerte eine andere Eigenschaft zur Karte haben, werden Sie haben mehrbindigen und Konverter.

Andere Tipps

Sie können eine Eigenschaft stroke in Ihrer Link-Klasse definieren, die jedes Mal, wenn die Knoten bewegen und dann binden Sie die entsprechende Stil Eigenschaft berechnet werden.

Ich nehme an, Sie auch etwas mit DataTriggers tun könnten versuchen, aber sie müssen bestimmte Werte mit zu arbeiten - Sie jede Art von Ausdrücken nicht verwenden können. Dies würde es schwierig machen, die Lösung Maßstab gut auf eine breite Palette von Abständen zwischen den Knoten zu haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top