2016-11-24 4 views
0

Ich ziehe einige Daten aus DB, und ich möchte diese Daten in einer Art von Spalten entlang der Listbox ausgerichtet haben, aber ich bekomme Elemente nebeneinander.WPF-Listbox-Ausrichtung

Was ich habe:

el1 el1 
longEl2 longEl2 

Was ich will,

el1  el1 
longEl2 longEl2 

Code:

<ListBox Grid.Row="2" ItemsSource="{Binding lb}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition></ColumnDefinition> 
        <ColumnDefinition></ColumnDefinition> 
        <ColumnDefinition></ColumnDefinition> 
       </Grid.ColumnDefinitions> 

       <CheckBox Grid.Column="0" Margin="10" Content="{Binding Name}" IsChecked="{Binding IsActive}"/> 

       <TextBlock Margin="10" Grid.Column="1">test</TextBlock> 

      </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
+0

ColumnDefinition width = SomeValue könnte Ihnen helfen. oder Sie können Ihr Gitter adn Listenfeld 'HorizontalContentAlignment =" Stretch "', so dass es alle Leerzeichen in gleichen Größen nimmt –

+0

Bereits versucht es ... es ist wieder für jedes geladene Element neu zu berechnen – Norgul

+0

Immer noch das gleiche ... stretch doesn ' t scheinen, irgendetwas zu tun, Breite auch – Norgul

Antwort

0

Mit List-Box oder im Allgemeinen jedes Item Grids für jede Zeile intern enthalten und macht die Raster-Spalten in jeder Zeile gleich können Sie die SharedSizeScope verwenden. Sie definieren Grid.IsSharedSizeScope="True" auf dem Steuerelement und benennen die Rasterspalten mit SharedSizeGroup="ColumnName" in der Datenvorlage.