WPF DataBound TreeView развернуть / свернуть

Я просто пытаюсь найти способ контролировать расширение / развалTreeView узлы через объект, который онисвязаны с. Объект имеетIsExpanded собственности, и я хочу использовать это, чтобы показатьTreeView Сам узел разворачивается или разворачивается на основе этого свойства.

Вот'мой код:

C #:

public partial class Window2 : Window
{
    public Window2()
    {
        InitializeComponent();

        this.DataContext = new List() { Base.GetParent("Parent 1"), Base.GetParent("Parent 2") };
    }
}

public class Base
{
    public string Name { get; set; }
    public bool IsExpanded { get; set; }

    public static Parent GetParent(string name)
    {
        Parent p = new Parent() { Name = name };

        p.Children.Add(new Child() { Name = "Child 1", GrandChildren = new ObservableCollection() { new GrandChild() { Name = "Grandchild 1" } } });
        p.Children.Add(new Child() { Name = "Child 2", GrandChildren = new ObservableCollection() { new GrandChild() { Name = "Grandchild 1" } } });
        p.Children.Add(new Child() { Name = "Child 3", GrandChildren = new ObservableCollection() { new GrandChild() { Name = "Grandchild 1" } } });

        return p;
    }
}

public class Parent : Base
{
    public ObservableCollection Children { get; set; }

    public Parent()
    {
        this.Children = new ObservableCollection();
    }
}

public class Child : Base
{
    public ObservableCollection GrandChildren { get; set; }

    public Child()
    {
        this.GrandChildren = new ObservableCollection();
    }
}

public class GrandChild : Base
{
}

XAML:


    
        
            
            
                
                    
                    
                        
                            
                        
                    
                
            
        
    
    
        
    

Ответы на вопрос(2)

Статья CodeProject Джоша Смита который показывает, как создать основанное на MVVM древовидное представление, используя общий (n-уровневый) подход.

Я не предполагаю, что с Карло что-то не такРеализация, но я нашел эту статью полезной для понимания элемента управления TreeView и MVVM в целом.

Решение Вопроса

    <style targettype="{x:Type TreeViewItem}">
        <Setter Property="IsExpanded" Value="{Binding IsNodeExpanded}">
        </Setter>
    </style>

Таким образом, стиль связывает объект с TreeViewItem, просматривает его атрибут IsNodeExpanded и присваивает это значение свойству TreeViewItem.IsExpanded. Если вы добавите Mode = TwoWay, они 'будем уведомлять друг друга (TreeViewItem сообщит объекту, когда он был расширен).

Спасибо!

 Krzysztof Skowronek14 нояб. 2018 г., 12:43
@NirMH это должно быть вTreeView.Resources
 Krzysztof Skowronek14 нояб. 2018 г., 13:18
и не забудьте поставитьMode=TwoWays для полной функциональности
 NirMH31 окт. 2018 г., 13:18
уже поздно (9 лет спустя) - но где в XML вы поместили элемент Style?

Ваш ответ на вопрос