Domanda

Ho un controllo utente personalizzato che ho scritto in WPF per visualizzare alcuni dati. Voglio mostrare questo UserControl in un elenco, ma voglio anche fornire molteplici intestazioni delle colonne (corrispondenti alcune proprietà sul cotrol utente) così gli utenti possono sorta sulle proprietà contenute nel UserControl.

Non sono sicuro che il modo migliore per andare su questo.

Al momento ho un ListBox che visualizza questi controlli utente, ma la ListBox non ha alcuna intestazione e io non riesco a capire come mettere più intestazioni sulla ListBox.

Idealmente mi piacerebbe qualcosa di simile:

Header1   Header2  Header3   Header4
[UserControlThatSpansAllFourColumns]

Il mio altro pensiero è stato quello di utilizzare un DataGrid e in qualche modo ottenere ogni elemento per estendersi su più colonne, ma finora non riesco a capirlo neanche.

Se qualcuno ha qualche consiglio, li avrei benvenuto!

È stato utile?

Soluzione

Ok, questo non è in ogni caso il "modo migliore", ma avevo appena gettare questo. Un modo questo genere di opere come ciò che è necessario è quello di utilizzare un ListView con un costume ItemContainerStyle che utilizza un <ContentPresenter> invece di il <GridViewRowPresenter> di default. Questo breve XAML dimostra un po 'questo:

<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>

Qui, si ottiene le intestazioni delle colonne, e le voci si estendono su tutta la ListView. In questa soluzione, tuttavia, il rendering di elementi sono un po 'in un mondo a sé stante. Non è realmente collegato alle colonne definite per la ListView. Quindi credo che un modo di fare questo lavoro è meglio per fornire la propria implementazione <RowPresenter> che in realtà prende in considerazione le GridViewColumns definiti nel listview genitore.

In ogni caso, spero che questo aiuta in qualche modo.

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