WPF: привязка TreeView - PullRequest
       3

WPF: привязка TreeView

2 голосов
/ 08 декабря 2010

У меня есть источник данных:

private List<PlayData> _treeData = new List<PlayData>();

    private void Test()
    {
        _treeData.Add(new PlayData()
        {
            BoolList = new List<bool>() { true, false, true },
            Name = "A"
        });

        _treeData.Add(new PlayData()
        {
            BoolList = new List<bool>() { true, false, true },
            Name = "B"
        });

        DataContext = this;
    }

Как мне связать это в XAML, чтобы Name было родительским, а список Bool - дочерними.Я безуспешно пытался с этим:

    <TreeView x:Name="treeView" Height="200" ItemsSource="{Binding Path=TreeData}" >
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Path=BoolList, Mode=TwoWay}" >
                <TextBlock FontWeight="Bold" Text="{Binding Path=Name, Mode=TwoWay}" />
            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>
    </TreeView> 

Ответы [ 2 ]

0 голосов
/ 08 декабря 2010

Из вашего примера неясно, что вы делаете, но, по сути,

  1. У вас должно быть публичное свойство, определенное в коде под названием TreeData (отсутствует в вашем образце, но при условииэто тот, который возвращает _ treeData)
  2. BoolList должен быть дочерним свойством TreeData (что, похоже, имеет место)
  3. Вам необходимо определить HierarchicalTemplate длякаждый элемент в вашем дереве, который содержит дочерние элементы.
  4. Определите регулярное значение DataTemplate для каждого элемента в древовидной структуре, который не содержит дочерних элементов

Если существуют разные типы данных, как в вашем случае, вам нужно объявить типобъект как в

 <HierarchicalDataTemplate DataType="{x:Type foo:PlayData}"
  ItemsSource="{Binding BoolList}">

Порядок шаблонов важен, если может быть несколько совпадений.

0 голосов
/ 08 декабря 2010

Поле _treeData должно быть выставлено как свойство, чтобы быть связанным.Из вашего примера кода не ясно, делаете ли вы это или нет.

Вы также можете избавиться от Mode = TwoWay на обеих ваших привязках, потому что нет ввода для возврата к значениям источника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...