È possibile chiamare Mouse.Capture
su un UIElement
. Questo ti darà quindi ogni evento del mouse che agisce sull'elemento o meno. ma è difficile da usare. Puoi catturare il mouse sulla tua casella di testo e registrarti per gli eventi di cattura persi, quando perdi l'acquisizione puoi ricatturarla. devi stare attento a comportamenti strani. Generalmente la sua cattiva pratica (credo) per non permettere a un utente di spostarsi da un campo. cosa c'è di meglio è quello di permettere loro di fare ciò che vogliono, ma disabilitare il pulsante che spingono dopo aver inserito i dati fino a quando tutti i campi sono validi (o qualcosa di simile)
Ecco alcuni link
other SO question
msdn sample code
casella combinata utilizza la cattura del mouse per dire se l'utente ha cliccato altrove in app per chiudere la casella combinata se aperta, se si fa clic su un altro controllo (o al di fuori della finestra)
Non so se questa tecnica ti impedirà di eliminare l'elemento. ci sono due tipi di focus in una app wpf. Hai messa a fuoco logica e messa a fuoco della tastiera. Più elementi possono avere il focus logico in una volta (ognuno all'interno di un ambito di messa a fuoco). per esempio, una casella di testo può avere un focus logico mentre si fa clic su un menu (che ha anche il focus logico). La messa a fuoco della tastiera può essere solo in un punto alla volta. Stai per fare un sacco di lavoro per te stesso. Prenderò seriamente in considerazione se stai facendo la tua interazione nel modo giusto. Potresti passare giorni a correggere questa interazione. Se si interrompe la perdita di concentrazione della casella di testo, cosa accade se l'utente fa clic sul pulsante Chiudi?
heres il msdn article on focus
fonte
2010-02-06 12:55:56
Focus-locking rende un'esperienza utente davvero odiosa. Prima di passare un sacco di sforzi cercando di capire come farlo, avrei ridisegnato l'interfaccia utente per funzionare in modo diverso - ad esempio, disabilita ogni altro controllo nella finestra finché il 'TextBox' non ha un contenuto valido. –
@Robert: a meno che non si stia progettando un'applicazione per registratore di cassa, è praticamente obbligatorio. In un'app di registro, digiti un numero o un testo, ALLORA decidi cosa è effettivamente quell'input, premendo un pulsante. (ad esempio Numero, SKU, numero, quantità, numero, chiave di pagamento, ecc.) – HiredMind