2010-08-19 105 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" />