2009-05-18 91 views
2

我希望在我的GridView(當前在ListView的內部)填充來自該列的數據的標題單元格中具有ComboBox。有點像使用Excel中的「自動過濾器」功能。使用列數據在GridView標題中填充組合框

我遇到的問題是我無法從標題單元格中獲取列的數據。目前,我有這樣的事情:

<Grid> 
    <Grid.Resources> 
    <DataTemplate x:Key="headerTemplate"> 
    <StackPanel> 
     <ComboBox></ComboBox> 
     <TextBlock FontSize="16" Text="{Binding}" Grid.Row="1" HorizontalAlignment="Center"/> 
     </StackPanel> 
    </DataTemplate> 
    </Grid.Resources> 
    <ListView Width="400" Height="200"> 
    <ListView.View> 
     <GridView ColumnHeaderTemplate="{StaticResource headerTemplate}"> 
      <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}"/> 
      <GridViewColumn Header="Namespace" DisplayMemberBinding="{Binding Namespace}"/> 
     </GridView> 
    </ListView.View> 
    <x:Type TypeName="Visual"/> 
    <x:Type TypeName="UIElement"/> 
    <x:Type TypeName="FrameworkElement"/> 
    </ListView> 
</Grid> 

但我不知道如何獲取數據來填充標題中的組合框。這樣做的最好方法是什麼?

回答

1

一個快速和骯髒的方法是這樣的:

<Grid.Resources> 
    <DataTemplate x:Key="headerTemplate"> 
     <StackPanel> 
      <ComboBox ItemsSource="{Binding Path=Items, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListView}}}" DisplayMemberPath="{Binding}"/> 
      <TextBlock FontSize="16" Text="{Binding}" Grid.Row="1" HorizontalAlignment="Center"/> 
     </StackPanel> 
    </DataTemplate> 
</Grid.Resources> 

如果你真的需要一個過濾器般列表,你必須弄清楚如何只得到不同的值。