Как выбрать первый элемент в расширенной группе (просмотр списка) - PullRequest
2 голосов
/ 07 февраля 2012

Может ли кто-нибудь помочь мне с этой проблемой (c # wpf):

У меня есть ListView с этим Style для моих Expander (для каждой группы):

<ListView.GroupStyle>
    <GroupStyle>
        <GroupStyle.HeaderTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Text="{Binding Path=Name}" />
                </StackPanel>
            </DataTemplate>
        </GroupStyle.HeaderTemplate>
        <GroupStyle.ContainerStyle>
            <Style TargetType="{x:Type GroupItem}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type GroupItem}">
                            <Expander IsExpanded="False">
                                <Expander.Header>
                                    <StackPanel Orientation="Horizontal">
                                        <TextBlock Text="{Binding Path=Name}" />
                                    </StackPanel>
                                </Expander.Header>
                                <ItemsPresenter />
                            </Expander>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </GroupStyle.ContainerStyle>
    </GroupStyle>
</ListView.GroupStyle>

Когда пользователь раскрывает Expander, я хотел бы выбрать первый элемент в расширенной группе.

Я добавил свою группу следующим образом (CustomerOrderList = ListView):

CustomerOrderList.ItemsSource = OrderDetails.DefaultView;
CollectionView cv = (CollectionView)CollectionViewSource.GetDefaultView(CustomerOrderList.ItemsSource);
PropertyGroupDescription pgd = new PropertyGroupDescription("OrderInfo");
cv.GroupDescriptions.Add(pgd);

Возможно ли это?

Спасибо, Сенне

1 Ответ

3 голосов
/ 07 февраля 2012

Да, это возможно.

Включает пространство имен Linq

 using System.Linq;

Обработка события экспандера Expanded

  <Expander Expanded="GroupExpander_Expanded" IsExpanded="False" ... /> 

Код позади ...

   private void GroupExpander_Expanded(object sender, RoutedEventArgs e)
   {
        var expander = sender as Expander;
        //Extract the group 
        var groupItem = expander.DataContext as CollectionViewGroup;
        //Set the first item from the group to ListBox's Selected Item property.
        CustomerOrderList.SelectedItem = groupItem.Items.First();
   }

Если вы используете MVVM , тогда используйте поведение Attached Property , чтобы включить в него эту функцию.

Надеюсь, это поможет,

...