0

我有一个显示很多项目的 LongListSelector。当 longListSelector 打开时,我看到组展开,即项目显示在组内。我希望 longList 选择器在开始时显示仅显示组名的折叠面板。就像一个索引。当您点击一个组时,其项目会展开。如何才能做到这一点?

4

1 回答 1

1

只需要自己实现它 - 如下所示:

在 XAML 中的项目(不是标题!)模板定义中,绑定Visibility包含项目的属性(在我的例子中是 a 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,文件夹标题模板的处理程序)。

于 2014-05-27T04:50:38.007 回答