2009-05-18 89 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> 

如果你真的需要一个过滤器般列表,你必须弄清楚如何只得到不同的值。