WPF Punti problema associazione dati
-
27-10-2019 - |
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.
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