2013-06-03 16 views
6

Sono costretto a chiedere aiuto, mentre non riesco a capirlo da solo. Sto lavorando all'applicazione desktop WPF-XAML, in cui la GUI viene principalmente generata dinamicamente.WPF XAML WrapPanel ListBox articoli di fila

La mia domanda riguarda lo stile di WrapPanel con gli oggetti ListBox.

Si prega di trovare un pezzo di codice dal mio UserControl (XAML):

<DockPanel x:Name="xResultPanel"> 
    <ListView x:Name="bResultPanel" ItemsSource="{Binding ResultList, UpdateSourceTrigger=PropertyChanged}"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
     <Expander Header="{Binding GroupName}" Style="{DynamicResource FeatureExpander2}"> 
      <WrapPanel ItemWidth="140" Orientation="Horizontal"> 
      <ListBox x:Name="ListOfTiles" ItemsSource="{Binding VideoSamples}"> 
       <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Width="120" Margin="10" HorizontalAlignment="Left"> 
        <Image /> 
        <TextBlock /> 
        </StackPanel 
       </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 
      </WrapPanel> 
     </Expander> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
    </ListView> 
</DockPanel> 

Sopra codice restituisce elementi ListBox non presentati in una fila, ma ogni elemento nella nuova linea. Ho provato a impostare MinWidth, Width ecc per WrapPanel e ListBox, ma senza risultati.

Grazie in anticipo per tutti i suggerimenti correlati su come forzare WrapPanel a riempire il contenuto in senso orizzontale.

risposta

11

Il problema è che il tuo WrapPanel ha un solo figlio: ListBox. Ciò significa che il layout viene eseguito dal modello ItemsPanel dello ListBox.

Prova a modificare:

<Expander Header="{Binding GroupName}" Style="{DynamicResource FeatureExpander2}"> 
     <ListBox x:Name="ListOfTiles" ItemsSource="{Binding VideoSamples}"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
      <StackPanel Width="120" Margin="10" HorizontalAlignment="Left"> 
       <Image /> 
       <TextBlock /> 
      </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
     <ListBox.ItemsPanel> 
      <ItemsPanelTemplate> 
      <WrapPanel /> 
      </ItemsPanelTemplate> 
     </ListBox.ItemsPanel> 
     </ListBox> 
    </Expander> 
+0

Grazie mille, Daniel! Ha risolto il mio problema :) – zyjespox

Problemi correlati