2009-05-18 24 views
2

GridView(現在はListViewの内部)のヘッダーセルにComboBoxのデータをその列のデータで取り込みたいとします。 Excelの「自動フィルタ」機能のように少し使います。GridViewヘッダーのComboBoxに列データを取り込みます

問題は、ヘッダーセル内の列のデータに到達できないことです。現時点では、私はこのようなものを持っています:

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

しかし、データを取得してヘッダのコンボボックスに入れる方法がわかりません。これを行う最善の方法は何ですか?あなたが本当にフィルターのようなリストが必要な場合は、あなただけの個別の値を取得する方法を見つけ出す必要があるでしょう

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

答えて

1

迅速かつ汚い方法は、このようなものになるだろう。

関連する問題