2010-08-19 7 views
7

Je cherche un moyen de "remplir complètement" un GridViewColumn avec une combo. Je suis capable de créer un modèle de cellule avec ComboBox et cela fonctionne très bien. Mais la largeur et la hauteur de ComboBox ne sont pas alignés avec le GridViewColumn. Même si j'essaie de définir la même hauteur/largeur GridViewColumn cache une partie de la comboBox.Comment "remplir" un GridViewColumn avec ComboBox (WPF)?

Il doit y avoir un cadre ou d'un style à donner des instructions WPF pour remplir le ComboBox complètement dans l'espace disponible de GridViewColumn

Ceci est mon XAML.

<Window x:Class="WPFStarter.ComboInsideListView.ComboBoxInsideListViewUsingObject" 
     x:Name="userControl" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="ComboBoxInsideListViewUsingObject" Height="300" Width="400"> 
    <Grid> 
     <ListView x:Name="listView" ItemsSource="{Binding ElementName=userControl, 
      Path=DataContext.Items}" SelectedItem="{Binding ElementName=userControl, Path=DataContext.SelectedItem, Mode=TwoWay}">     
      <ListView.View> 
       <GridView> 
        <GridViewColumn Header="First Name" DisplayMemberBinding="{Binding Path=First}"/> 
        <GridViewColumn Header="Gender"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <ComboBox x:Name="cmb_Gender" Width="75" SelectedValue="{Binding Path=Gender}"      
        ItemsSource="{Binding ElementName=userControl, Path=DataContext.Genders}" GotFocus="ComboBox_GotFocus"   /> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
       </GridView> 

      </ListView.View> 

     </ListView> 
    </Grid> 
</Window> 

Répondre

9

Inclure le style suivant dans les listviews-ressources. Ensuite, vous pouvez régler la HorizontalAlignment-propriété du ComboBox à HorizontalAlignment="Stretch" et il fera que vous le souhaitez:

<ListView.Resources> 
      <Style TargetType="ListViewItem"> 
       <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
      </Style> 
</ListView.Resources> 
+0

Merci. Cela fonctionne bien, mais il laisse toujours une marge entre le Combo et la bordure de la cellule. Y a-t-il un moyen de supprimer cela? –

+0

Vous pouvez essayer de changer le ControlTemplate: http://msdn.microsoft.com/en-us/library/ms788717.aspx – HCL

+0

Merci, ce lien a aidé. Marquer votre réponse comme la solution. –

1

Avez-vous essayé ceci:

<ComboBox x:Name="cmb_Gender" Width="75" SelectedValue="{Binding Path=Gender}"      
    ItemsSource="{Binding ElementName=userControl, Path=DataContext.Genders}" 
    GotFocus="ComboBox_GotFocus" 
    HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />