Oppure

Loading
29/04/10 10:08
mg
Apro ancora questa discussione e poi non disturbo per un po'...
Ho collegato con binding una casella testo con la coordinata Y2 di una linea in modo tale che modificando la casella testo si aggiorna automaticamente la posizione della linea. Ho scritto quanto segue

        Line l1 = new Line();
        Binding bl1 = new Binding();
        
        public Window1()
        {
            InitializeComponent();
            
            bl1.Source = textBox3;    // stabilisco la sorgente del binding      
            bl1.Path = new PropertyPath("Text"); // specifico la prop. della sorgente 
            bl1.Mode = BindingMode.TwoWay;        // specifico il tipo di binding  
            l1.SetBinding(Line.Y2Property, bl1);  // imposto l'oggetto a cui si collega il binding specificandone la sua proprietà 
 
        } ....


vorrei poter impostare che la proprietà Y2 della linea non coincida esattamente con la proprietà text ma ad esempio sia il valore della proprietà text + 100 .

E' possibile farlo?

grazie
MArco
aaa
29/04/10 16:29
mg
Potete dirmi se usando un Converter posso ottenere quanto chiesto, oppure esiste un modo molto più semplice, oppure anche con il Converter non è possibile farlo.

Grazie mille

MArco

p.s. il mio obiettivo è quello (semplificando il concetto) di far disegnare un rettangolo inserendo tramite due textbox base ed altezza e legare con il binding le textbox ai vertici del rettangolo. Poichè però inserisco delle lunghezze come input e a me servono le coordinate devo eseguire delle operazioni per estrapolare dalle lunghezze e fissato un origine le coordinate. Un approccio con il binding non è forse corretto per questo problema?
aaa
29/04/10 18:28
Il Totem
Ci sarà sicuramente un modo per fare questo nel binding, ma a dir la verità non lo conosco. Potresti comunque modificare il codice della proprietà Y di Line (Line non è una classe predefinita, perciò presumo che l'abbia scritta tu) per aggiungere 100 al valore passato.
aaa
30/04/10 7:03
mg
grazie della risposta Totem.

Line è una classe di System.Windows.Shapes. Disegna semplicemente una linea e ha proprietà x1 y1 x2 y2.

Ho visto che è possibile modificare il binding source <--> target inserendo un Converter. Che dite, è questa la strada giusta o è possibile fare il tutto in modo molto più semplice?

grazie ancora


aaa
30/04/10 9:34
Il Totem
Se si tratta di un converter, poi guardare qui:
totem.altervista.org/guida/versione3/…
In quel capitolo ho usato un converter per visualizzare un tipo complesso in una propertygrid. Dovrebbe essere la stessa cosa.
aaa
30/04/10 13:10
mg
grazie Totem

così funziona anche se è da migliorare

public class MGConverterA : IValueConverter
    {
        
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            string vals = value as string;
            double vald = double.Parse(vals);
            vald = vald + 100;
            return vald.ToString();
            

        }
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return DependencyProperty.UnsetValue;
        }
    } 


avendo inserito tra le risorse
<local:MGConverterA x:Key="MGConverter" />


e tra i namespace xml
xmlns:local="clr-namespace:Disegna"

essendo disegna il nome namespace in cui si trova la classe MGConverterA.

ed inserendo il binding come di seguito
<Line X1="0" Y1="0" X2="200" Y2="{Binding Path=Text, ElementName=textBox3, Mode=OneWay, Converter={StaticResource MGConverter}}" Name="ln2" Stroke="Red" />

aaa