Pregunta

Tengo un control de usuario a medida que escribí en WPF para mostrar algunos datos. Quiero mostrar esta usercontrol en una lista, pero también quiero para proporcionar múltiples títulos de las columnas (emparejan algunas propiedades en el cotrol de usuario) que los usuarios pueden ordenar en las propiedades contenidas en el control de usuario.

No estoy seguro de la mejor manera de ir sobre esto.

Actualmente tienen un ListBox mostrar estos controles de usuario, pero el cuadro de lista no tiene cabecera y no puedo encontrar la manera de poner varias cabeceras en el cuadro de lista.

Lo ideal sería algo como esto:

Header1   Header2  Header3   Header4
[UserControlThatSpansAllFourColumns]

Mi otra idea era utilizar una cuadrícula de datos y de alguna manera obtener cada elemento para abarcar varias columnas, pero hasta ahora no puede darse cuenta de eso tampoco.

Si alguien tiene algún consejo, me gustaría darles la bienvenida!

¿Fue útil?

Solución

Ok, esto no es en ningún caso la "mejor manera" pero yo acababa de lanzar esto en. Una forma de este tipo de obras como lo que necesita es usar un ListView con una costumbre ItemContainerStyle que utiliza un <ContentPresenter> en lugar de la <GridViewRowPresenter> defecto. Este breve XAML algo demuestra esto:

<ListView>
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListViewItem">
                        <ContentPresenter/>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Header1"/>
            <GridViewColumn Header="Header2"/>
        </GridView>
    </ListView.View>

    <Button>Item1</Button>
    <Button>Item2</Button>

</ListView>

A continuación, se obtiene los títulos de las columnas y los artículos extenderse a lo largo de toda la vista de lista. En esta solución, sin embargo, la prestación de los artículos son una especie de en un mundo en sí mismo. En realidad no está conectado a las columnas definidas para el ListView. Así que supongo que una manera de hacer este trabajo mejor es proporcionar su propia implementación <RowPresenter> que realmente tiene en cuenta las GridViewColumns definidos en la vista de lista de los padres.

De todos modos, espero que esta ayuda de alguna manera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top