2009-05-05 14 views
11

Sto riscontrando problemi nel creare uno stiramento ComboBox per riempire l'intera larghezza della colonna in un GridViewColumn. Dovrebbe anche ridimensionare quando la colonna viene ridimensionata.Crea celle combo WPF riempire l'intera larghezza di una colonna

Nell'esempio seguente ho un StackPanel con un ComboBox interno. Questo è impostato per allungare e verrà infatti allungato per riempire la larghezza StackPanel.

Quindi aggiungo uno ListView con una colonna, contenente uno StackPanel con un ComboBox. Sia lo StackPanel sia lo ComboBox sono impostati per allungarsi, ma non lo fanno. Uso i colori di sfondo per identificare la dimensione dello StackPanel s e non c'è rosso a meno che non imposti una larghezza o aggiunga elementi allo ComboBox in modo che abbia bisogno di più larghezza.

Ho anche provato a giocare con la proprietà HorizontalContentAlignment senza successo.

<StackPanel Height="59" Margin="45,12,38,0" VerticalAlignment="Top" Background="Green"> 
    <ComboBox HorizontalAlignment="Stretch" /> 
</StackPanel> 

<ListView x:Name="MyListView" Margin="0,106,0,0"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Num" Width="70"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <StackPanel Background="red" Orientation="Horizontal" HorizontalAlignment="Stretch"> 
          <ComboBox HorizontalAlignment="Stretch" /> 
         </StackPanel> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 
    <ListViewItem></ListViewItem> 
</ListView> 
+0

Re il flag del moderatore; hai perso il 26 dicembre e il 6 marzo (a meno che manchi il log sbagliato) –

+0

Usa 'DockPanel' invece di' StackPanel' – Aaaaaaaa

+0

A meno che lo StackPanel non abbia qualcosa in esso, potresti avere più fortuna con un Border. –

risposta

15

Provare a impostare la Style del ListViewItem. Ho anche rimosso il tuo StackPanel.

<ListView x:Name="MyListView" Margin="0,106,0,0"> 
    <ListView.Resources> 
     <Style TargetType="ListViewItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
     </Style> 
    </ListView.Resources> 

    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Num" Width="170"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <ComboBox /> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 

    <ListViewItem></ListViewItem> 
</ListView> 
+0

Grazie! Funziona, tuttavia, mi dà un nuovo problema. Bene, nell'esempio semplificato che ho dato nella domanda è tutto buono, ma la mia vera lista è più complessa. Quando si aggiunge lo stile - senza avere StackPanel in giro - il ridimensionamento della colonna è molto lento. Se aggiungo uno StackPanel circostante con la proprietà Orientation = Il ridimensionamento "Horizontal" è scorrevole. Questo problema si verifica quando ho tipicamente> 1000 elementi nella mia lista. Qualche idea su cosa dia questo? Non usare la tua soluzione, ma l'aggiunta di Background = "Transparent" dà lo stesso problema. Mi sento come se avessi provato di tutto .. Grazie! – stiank81

+2

Potrebbe aggiungere che aggiungere uno StackPanel circostante con orientamento orizzontale impedisce al ComboBox di riempire l'intera colonna ... – stiank81

+0

Bene, hai risposto alla domanda, quindi sto chiudendo questa. Grazie. Si prega di controllare la mia nuova domanda sui problemi di ridimensionamento delle dimensioni della colonna: http://stackoverflow.com/questions/829242/wpf-column-resize-performance-issues – stiank81

Problemi correlati