Domanda

sto sviluppando biblioteca grafico interattivo ... e l'applicazione, che lo utilizzano.

In applicazione, ho un ListView con Points del CurrentItem.

public Point CurrentPoint
  {
   get { return myCurrentPoint; }
   set
   {
    myCurrentPoint = value;
    base.OnPropertyChanged("CurrentPoint");
   }
  }

Allo stesso pannello, ho due caselle di testo per la modifica le coordinate del punto di:

<TextBox Text="{Binding CurrentPoint.X, Mode=TwoWay}" 
       Grid.Column="1" Grid.Row="0" Width="80" Margin="5"/>

Il mio grande problema è, che Point è una struttura ... quindi è passaggio per valore.

Se cambio X coordinare in testo ... non cambia Point databind.

Come posso risolvere questo problema?
Devo scrivere il mio classe Point, e la classe Line troppo, a causa della sua Points sono PointCollection di Point?

Se è necessario, posso postare più di codice:)

Grazie.

È stato utile?

Soluzione

Perché non creare un controllo combinato che cambia il punto al posto della x-y-componente della Point. Quindi è possibile associare al vostro Point-proprietà e vincolante funzionerà come previsto. Inoltre, probabilmente avete un'interfaccia utente più bello.

È possibile creare una UserControl, aggiungere due caselle di testo e aggiungere un DependencyProperty-Point a questo controllo. Ogni volta che il contenuto di una delle caselle di testo cambia, impostare la Point-proprietà al suo nuovo valore.

public class PointInputBox : UserControl{

  public static readonly DependencyProperty PointProperty =
    DependencyProperty.Register("Point", typeof(Point), typeof(PointInputBox), new FrameworkPropertyMetadata(new Point(0,0),FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));


  public Point Point {
    get { return (Point)GetValue(PointProperty); }
    set { SetValue(PointProperty, value); }
  }

  // Add here event handlers for changes of your input boxes and set 
  //  the Point-value accordingly 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top