Estoy tratando de lograr el equivalente de un WinForms ListView
con su propiedad View
establecido en View.List
. Visualmente, lo siguiente funciona bien. Los nombres de archivo en mi Listbox
van de arriba a abajo y luego se envuelven en una nueva columna.ListBox + WrapPanel tecla flecha de navegación
Aquí está el XAML básica estoy trabajando con:
<ListBox Name="thelist"
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding}"
ScrollViewer.VerticalScrollBarVisibility="Disabled">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel IsItemsHost="True"
Orientation="Vertical" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
Sin embargo, por defecto flecha tecla de navegación no significa envolver. Si se selecciona el último elemento en una columna, presionar la flecha hacia abajo no va al primer elemento de la siguiente columna.
he intentado controlar el evento KeyDown
así:
private void thelist_KeyDown(object sender, KeyEventArgs e) {
if (object.ReferenceEquals(sender, thelist)) {
if (e.Key == Key.Down) {
e.Handled = true;
thelist.Items.MoveCurrentToNext();
}
if (e.Key == Key.Up) {
e.Handled = true;
thelist.Items.MoveCurrentToPrevious();
}
}
}
Esto produce el último en entrar, la columna a la primera en su última columna de comportamiento que yo quería, pero también produce una rareza en la izquierda y manejo de la flecha derecha. Cada vez que se ajusta de una columna a la siguiente/anterior con las flechas arriba/abajo, un solo uso posterior de la tecla de flecha izquierda o derecha mueve la selección a la izquierda o a la derecha del elemento que se seleccionó justo antes de que se produzca el ajuste.
Supongamos que la lista está llena de cadenas "0001" a "0100" con 10 cadenas por columna. Si utilizo la tecla de flecha hacia abajo para ir de "0010" a "0011", luego presiono la tecla de la flecha hacia la derecha, la selección se mueve a "0020", justo a la derecha de "0010". Si se selecciona "0011" y utilizo la tecla de flecha hacia arriba para mover la selección a "0010", al presionar las teclas de flecha hacia la derecha se mueve la selección a "0021" (a la derecha de "0011", y una presión hacia la izquierda flecha de selección tecla mueve a "0001".
Cualquier ayuda lograr el diseño de columna-wrap deseado y flecha tecla de navegación sería apreciada.
(ediciones se trasladó a mi propia respuesta, ya que técnicamente es una respuesta.)
Genial, esto me ayudó mucho. ;) – Inferis