Заполните ComboBox в заголовке GridView данными столбца - PullRequest
2 голосов
/ 18 мая 2009

Я хочу иметь ComboBox в ячейках заголовка моего GridView (в настоящее время внутри ListView), заполненного данными из этого столбца. Используется немного как функция «Автофильтр» в Excel.

Проблема в том, что я не могу получить данные для столбца внутри ячейки заголовка. На данный момент у меня что-то вроде этого:

<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 Ответ

1 голос
/ 22 мая 2009

Быстрый и грязный путь будет примерно таким:

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

Если вам действительно нужен список, похожий на фильтр, вам придется выяснить, как получить только отдельные значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...