Domanda

Ho due controlli personalizzati che sono paragonabili a un nodo e il controllo che disegna i collegamenti tra i nodi.

Vorrei avere entrambi i controlli scritti tanto in xaml come possibile.Il link di negozi entrambi i nodi come le proprietà di dipendenza, e io uso il databinding per spostare la linea tra i nodi ogni volta che i nodi si muovono.

Sarebbe bello essere in grado di modificare altri valori della linea, per esempio, la larghezza del tratto, a seconda della distanza tra i due nodi.Così la proprietà necessita di aggiornamento quando un nodo si muove, e non riesco a ottenere la mia testa intorno come che avrebbe funzionato.

Qualcuno ha qualche idea?

È stato utile?

Soluzione

si può provare a fare qualcosa di simile:

  1. come nel post precedente, definire una larghezza tratto (qualunque cosa avete bisogno) di proprietà del collegamento, classe
  2. definire multibinding applicato alla proprietà, al passaggio delle due nodi per l'associazione dovrebbe apparire come:

<Multibinding Converter="{StaticResource converter}">
<Binding Path="Node1" RelativeSource|Source...="" />
/>
</Multibinding>

  1. Implementare l'interfaccia IMultiValueConverter, che sarà essenzialmente calcolare come la corsa dovrebbe apparire come in base alla distanza tra i nodi.

  2. in xaml creare istanza del convertitore, e aggiungere al vostro multibinding del Convertitore di proprietà.

il vantaggio di questa soluzione è che si dispone di abbastanza chiaro modello di classe e ciascuna classe non semplici compiti.inoltre, più tardi, è possibile configurare il convertitore di classe a sostegno di casi in più senza toccare il nodo di classe, che rimane semplice ed è progettato semplicemente per la visualizzazione di nodi.

in generale, ogni volta che si dispone di una mappa più valori di proprietà di un altro immobile, dovrete usare multibinding e convertitore.

Altri suggerimenti

Si potrebbe definire una proprietà StrokeWidth nel tuo link di classe che viene calcolato ogni volta che i nodi spostare e quindi associare lo stile appropriato proprietà.

Suppongo che si potrebbe anche provare a fare qualcosa con Datatrigger, ma hanno bisogno di valori specifici per lavorare - non è possibile utilizzare qualsiasi tipo di espressioni.Questo rende difficile avere la soluzione adatta bene ad un'ampia gamma di distanze tra i nodi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top