Domanda

Fondamentalmente quello che voglio fare è consentire a un utente di digitare un valore stringa e hanno il rotolo casella di riepilogo per la voce che corrisponde al testo che hanno digitato (o la prima partita come).

Se io uso il metodo .ScrollIntoView (), il problema è che si mette l'elemento in teh fondo della zona visibile se l'articolo è più in basso nella lista rispetto alla posizione di scorrimento corrente, ed è al top, se è più in alto nell'elenco rispetto alla posizione di scorrimento corrente. Voglio renderlo coerente, rendendo la prima voce della lista (a meno che naturalmente non può essere causa di essere uno degli ultimi "pagina" di elementi).

Ho cercato di esso falso selezionando la voce che è x , più in basso nella lista dove x è il numero di elementi visibili. Questo funziona quando si va giù, ma si rompe quando si va indietro. e sono stato in grado di determinare quale indice è attualmente quello al primo posto visibile nella mia lista.

caselle di riepilogo WinForms hanno la proprietà .TopIndex che des esattamente quello che sto cercando, ma sono stato in grado di trovare l'equivalente WPF. Qualcuno là fuori ha un'idea di come realizzare questo?

Grazie in anticipo!

È stato utile?

Soluzione

Usa ScrollIntoView due volte, prima per mostrare l'ultimo elemento della lista, quindi per mostrare il vostro elemento selezionato. In questo modo sarà sempre lavorare dal basso verso l'alto. Avrete bisogno di chiamare UpdateLayout dopo ogni chiamata per assicurarsi che le posizioni siano corrette.

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