Как открыть LongListSelector с группами, свернутыми в WP7?

У меня есть LongListSelector, который отображает множество элементов. Когда longListSelector открывается, я вижу, что группы расширены, т.е. элементы отображаются внутри групп. Я хочу, чтобы селектор longList отображал свернутую панель, показывая только имена групп при запуске. Как индекс. Когда вы нажимаете на группу, ее элементы раскрываются. Как это может быть сделано?

1 ответ

Решение

Просто нужно было реализовать это самому - сделал это следующим образом:

В определении шаблона элемента (не заголовка!) В XAML свяжите Visibility свойство содержащего элемента (в моем случае, Grid):

<DataTemplate x:Key="itemTemplate">
  <Grid Visibility="{Binding FolderVisibility}">
  ...

Извлечь группу товаров из ObservableCollection и создайте подходящее свойство для обработки статуса раскрытия / свертывания:

public class MyGroup : ObservableCollection<MyItem>
{
    ...
    private bool m_expanded = true;
    public bool Expanded
    {
        get { return m_expanded; }
        set
        {
            m_expanded = value;
            OnPropertyChanged( new PropertyChangedEventArgs( "Expanded" ));
            foreach( var i in this )
            {
                i.OnFolderCollapsedExpanded();
            }
        }
    }
    ...

Наконец, вам нужно FolderVisibility свойство каждого элемента списка:

public class MyItem : INotifyPropertyChanged
{
    ...
    public event PropertyChangedEventHandler PropertyChanged;
    ...
    public Visibility FolderVisibility
    {
        get { return MyFolder.Expanded ? Visibility.Visible : Visibility.Collapsed; }
    }
    public void OnFolderCollapsedExpanded()
    {
        var h = PropertyChanged;
        if( h != null ) h( this, new PropertyChangedEventArgs( "FolderVisibility" ));
    }
    ...

Затем просто переключите папку Expanded недвижимость в подходящем месте (например, Click обработчик для шаблона заголовка папки).

Другие вопросы по тегам