Es posible «forzar» el combobox de los elementos en la lista para que aparezca en decir dos columnas?

Por ejemplo como este:

CB Elemento Seleccionado

CB Elemento 1 | CB Artículo 4

CB Elemento 2 | CB Artículo 5

CB tema 3 |

Alguna razón en particular por la que quiere que vaya vertical, luego horizontal?
No sabemos nada acerca de lo que importa más a Kristo, y si vas a culpar a alguien para cuidar de interfaz de usuario (o por ser curioso), entonces no estoy con usted.
Yo estaba pensando en la funcionalidad de sabios, si había 100 entradas, para llegar a los 50 el cliente tenga que desplazarse a la parte inferior de la ComboBox lista (desde que se habían de ser ordenados en la mitad (verticalmente) en lugar de dos-por-dos), en lugar de hasta la mitad. ¿Qué sucede cuando él tiene miles?
Si había 100 o 1000 entradas, él sería mejor no usar un Combo de todos modos 🙂
exactamente

OriginalEl autor Kristo | 2013-02-04

4 Comentarios

  1. 5

    Puede cambiar el ItemsPanel a un WrapPanel, acaba de ser cuidadoso en la altura (se podría escribir un convertidor calcula según el número de elementos) :

    <ComboBox>
        <ComboBox.Resources>
            <Style TargetType="ComboBox">
                <Setter Property="ItemsPanel">
                    <Setter.Value>
                        <ItemsPanelTemplate>
                            <WrapPanel IsItemsHost="True" Orientation="Vertical" Width="100" Height="50" />
                        </ItemsPanelTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
            <Style TargetType="ComboBoxItem">
                <Setter Property="Width" Value="50" />
            </Style>
        </ComboBox.Resources>
    
        <ComboBoxItem Content="Value 1" />
        <ComboBoxItem Content="Value 2" />
        <ComboBoxItem Content="Value 3" />
        <ComboBoxItem Content="Value 4" />
        <ComboBoxItem Content="Value 5" />
    </ComboBox>
    Sería esto también funciona si se utiliza un ItemTemplate para la ComboBox y el uso de un ItemsSource en lugar de poner en el ComboBoxItem individualmente?
    sí, va a trabajar
    sí funciona bien con DataTemplate y ItemsSource … muchas gracias @mathieu 🙂

    OriginalEl autor mathieu

  2. 6

    Bueno, se puede, aquí está el código XAML:

    <ComboBox Name="ComboBox">
        <ComboBox.ItemsPanel>
            <ItemsPanelTemplate>
                <UniformGrid Columns="2"/>
            </ItemsPanelTemplate>
        </ComboBox.ItemsPanel>
    </ComboBox>

    Ahora una prueba simple, la adición de números de 0 a 8 da:

    C# WPF Combobox lista desplegable para varias columnas

    Ahora usted puede estilo de todo lo que quieras… 🙂

    De curso de cada elemento (cada número, en este caso en particular) es independiente, puede hacer clic elemento, para que no haya malos entendidos.

    [EDITAR] acabo de dar cuenta que quiere hacerlo «de la manera opuesta’, que está en ‘filas’ la dirección, si es así, entonces tal vez es mejor utilizar el WrapPanel lugar, como alguien sugirió en la otra respuesta. El UniformGrid rellena la cuadrícula en la columna de la sabia dirección de la primera.

    Tal vez hay una manera de hacerlo con UniformGrid, pero no hay aparente y fácil de un solo clic en cambiar (me equivoqué aquí antes 🙂 )

    se la representa como una transposición de la matriz de comparación con el original, que no le da lo que el op quiere
    Sí, me he dado cuenta de que, por lo tanto la sección EDITAR. 🙂
    gracias de todos modos por el aporte, yo podría usar UniformGrid más adelante 😉

    OriginalEl autor Patryk Ćwiek

  3. 2

    Usted necesita para poner una WrapPanel en el ItemsPanel de los combobox.

    <ComboBox>
        <ComboBox.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel Orientation="Vertical" Height="100" />
            </ItemsPanelTemplate>
        </ComboBox.ItemsPanel>
    
        <ComboBoxItem Content="Value 1" />
        <ComboBoxItem Content="Value 2" />
        <ComboBoxItem Content="Value 3" />
        <ComboBoxItem Content="Value 4" />
        <ComboBoxItem Content="Value 5" />
        <ComboBoxItem Content="Value 6" />
        <ComboBoxItem Content="Value 7" />
        <ComboBoxItem Content="Value 8" />
        <ComboBoxItem Content="Value 9" />
        <ComboBoxItem Content="Value 10" />
        <ComboBoxItem Content="Value 11" />
        <ComboBoxItem Content="Value 12" />
        <ComboBoxItem Content="Value 13" />
        <ComboBoxItem Content="Value 14" />
        <ComboBoxItem Content="Value 15" />
    </ComboBox>

    C# WPF Combobox lista desplegable para varias columnas

    OriginalEl autor Michael Schnerring

  4. 0

    usted podría tratar de cambiar la plantilla de control para el uso de la Cuadrícula y el uso de convertidores para decidir qué columna y fila de la cbitems. No estoy seguro de cómo se desea manejar el elemento seleccionado sin embargo.

    se trata de flujo de diseño. no columnas.
    Sí, ya veo lo que quieres decir. Mirando el ejemplo de que la gente siempre, me doy cuenta de lo que él/ella estaba pidiendo.

    OriginalEl autor TYY

Dejar respuesta

Please enter your comment!
Please enter your name here