2010-08-19 74 views
7

我正在寻找一种方法来“完全填充”一个组合框GridViewColumn。我可以用ComboBox创建一个单元格模板,它工作正常。但是ComboBox的宽度和高度与GridViewColumn不一致。 即使我试图设置相同的高度/宽度GridViewColumn隐藏组合框的某些部分。如何用ComboBox(WPF)“填充”一个GridViewColumn?

必须有一些设置或样式指示WPF完全充满ComboBoxGridViewColumn

可用空间这是我的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> 

回答

9

包括下面的样式到列表视图资源。然后,您可以将组合框的Horizo​​ntalAlignment属性设置为HorizontalAlignment="Stretch",它将按照您的意愿进行设置:

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

谢谢。这工作正常,但它仍然留下组合和细胞边界之间的一些余地。有没有办法消除这种情况? – 2010-08-19 13:18:19

+0

您可以尝试更改ControlTemplate: http://msdn.microsoft.com/en-us/library/ms788717.aspx – HCL 2010-08-19 14:10:39

+0

谢谢,此链接有帮助。将您的答案标记为解决方案。 – 2010-08-20 07:05:59

1

你有没有尝试过这样的:

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