Развернуть/свернуть группы в дереве, щелкнув текст

Как мне сделать так, чтобы можно было разворачивать/сворачивать группы в TreeView, просто щелкая по тексту, а не щелкая стрелку влево.


person magol    schedule 21.01.2011    source источник


Ответы (1)


Вы должны создать стиль для своего элемента дерева с помощью следующего сеттера:

        <Style x:Key="TreeItemStyle"
               TargetType="{x:Type TreeViewItem}">                
            <Setter Property="IsExpanded"
                    Value="{Binding Path=IsExpanded, Mode=TwoWay}"/>
        </Style>

Затем добавьте к наблюдаемому свойству класса данных представления группы с именем IsExpanded:

    private bool _isExpanded;

    public bool IsExpanded
    {
        get
        {
            return this._isExpanded;
        }
        set
        {
            if (this._isExpanded != value)
            {
                this._isExpanded = value;
                this.OnPropertyChanged("IsExpanded");
            }
        }
    }

Затем перехватите событие щелчка по гиперссылке и установите IsExpanded как true:

    private void Hyperlink_Click(object sender, RoutedEventArgs e)
    {
        var dc = ((Hyperlink)sender).DataContext;
        if (dc is GroupViewData)
        {
            ((GroupViewData)dc).IsExpanded = true;
        }
    }

Конечно, лучше всего использовать команды вместо обработчиков кликов, но я не знаю состава вашей модели представления, поэтому не могу предоставить надлежащее решение. Я просто должен сказать, что в наших проектах с похожими требованиями мы успешно избегаем кода просмотра. Боже, благослови WPF!

person Alex Zhevzhik    schedule 21.01.2011