Domanda

Ho appena registrato questo con Microsoft Connect, ma mi chiedo se qualcun altro ha incontrato e trovato una soluzione. Google non sta mostrando molto ...

Semplice Repro:

  • L'applicazione ha una casella di testo WPF con MaxLength set
  • Utilizza il pannello di immissione TabletPC di scrivere più testo di quanto è consentito
  • Premere "Inserisci" sul pannello TabletPC e l'applicazione si blocca

Al di là cambiare il comportamento della mia candidatura non utilizzare MaxLength, qualcuno sa di una soluzione?

(vi posterò qui se Microsoft tornare con qualche consiglio.)

EDIT:. avrebbe dovuto precisare Io corro NET 3.5 e Windows 7

È stato utile?

Soluzione 3

A quanto pare questo è stato risolto in .NET 4.0, ma piani per una correzione 3.5. Il suggerimento da MS è stato quello di gestire l'evento TextChanged per fornire MaxLength automaticamente (ew!).

Altri suggerimenti

A seconda della architettura dell'applicazione, se si sta utilizzando MVVM, potrei rimuovere il MaxLength e poi fare la convalida nell'oggetto ViewModel per garantire il valore corrisponde alla lunghezza che ci si aspetta.

In caso contrario, potrei usare la convalida Binding come quello che è descritto in questo articolo .

Non è quello che chiamerei ottimale in caso di qualcosa che è veramente limitata lunghezza come un codice postale o un numero di telefono, ma permette di interiorizzare tutta la convalida in un unico luogo.

Sarò onesto, non ho esperienza sia con WPF o interazioni di Tablet PC in modo da sto girando cieco qui, ma io sia colpire il bersaglio o imparare qualcosa:)

Dal mio punto di vista semplicistico vedo un certo numero di arounds di lavoro, tutti implicano la rimozione della lunghezza max:

  1. Alla presentazione, troncare la stringa nella VM, se troppo lungo
  2. Alla presentazione, l'utente attento al troncamento e presente stringa troncata di nuovo loro nella casella di testo per la modifica
  3. Hang un evento fuori la casella di testo e troncare la stringa "OnChange" con un messaggio di allarme adiacente al campo, come un errore di modulo web.

In ogni caso, spero che si ottiene alcune risposte da alcune persone che sanno di cosa stanno parlando;)

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