237 messaggi dal 08 gennaio 2011
Ciao,
Ho un oggetto con 3 proprietà in binding con 3 TextBox di cui una di tipo Integer nullable . Quando inserisco dei valori nelle TextBox grazie al binding si aggiornano i valori delle proprietà; stessa cosa se da codice modifico i valori delle proprietà dell'oggetto le TextBox si aggiornano. Siccome questo oggetto prevede che una delle proprietà possa avere valore nullo, vorrei capire come fare affinché se nella TextBox in binding con questa proprietà non digito niente o cancello quello che c'è la proprietà corrispondente assuma valore nullo.

Più precisamente succede questo : Se da codice (VB) imposto la proprietà nullable a Nothing, la TextBox corrispondente non visualizza nulla e uscendo dalla TextBox non viene visualizzato il bordo rosso, se invece digito un valore, poi esco dalla TextBox (LostFocus) poi rientro nella TextBox e cancello tutto ed esco di nuovo appare il bordo rosso e il valore della proprietà corrispondente dell'oggetto in binding è uguale a l'ultimo digitato anche se nella TextBox non c'è scritto alcunché.

Quindi come posso fare per passare un valore nullo ad una proprietà Nullable di un oggetto mediante una TextBox ?
237 messaggi dal 08 gennaio 2011
Ho provato anche con una ValidationRule ma niente...

Mi pare di capire che la comodità offerta dal Binding WPF si perde se si deve "passare valori nulli" a proprietà Nullable.

Dovrei gestire da codice gli eventi della TextBox e se vuota o piena sola di spazi mettere a Nothing la proprietà dell'oggetto sorgente.

Ho capito male ?
237 messaggi dal 08 gennaio 2011
Mi scuso per il titolo della discussione che solo ora mi sono accorto essere un pò contorto :)

Spero comunque che il senso sia stato capito. Il titolo non si può modificare normalmente.

Sarebbe meglio se fosse : Passare un valore nullo tramite una TextBox in binding con una proprietà nullable di un oggetto indicato come sorgente.

Grazie, mi scusino.
Modificato da Mario Formosa il 13 febbraio 2020 13:02 -
237 messaggi dal 08 gennaio 2011
Si risolve utilizzando nello XAML TargetNullValue come di seguito mostrato. Soluzione ottenuta sul forum MSDN.

<TextBox Text="{Binding Quantità,TargetNullValue=''}" />


Due giorni di crisi esistenziale per questo fatto.

L'avevo comunque visto l'utilizzo di TargetNullValue https://docs.microsoft.com/it-it/dotnet/api/system.windows.data.bindingbase.targetnullvalue?view=netframework-4.8
ma quello che c'è scritto nella documentazione ufficiale mi ha sviato completamente; c'è scritto che se la proprietà in binding è nulla nella TextBox corrispondente viene visualizzato ciò che contiene TargetNullValue.

Comunque resto deluso dal fatto che, come avviene il passaggio di valori 'normali' tra la TextBox e la proprietà, non avvenga automaticamente anche il passaggio di un valore nullo quando la TextBox è vuota e la proprietà in binding è nullable.

Grazie a tutti.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.