TreeView шаблон для дерева с круговой ссылкой типа - PullRequest
0 голосов
/ 08 января 2012

Мне нужно отобразить дерево, связанное с такими иерархическими объектами:

public class Node
{
    public string Name
    public List<Connector> Connector;
}

public class Connector
{
    public string Name
    public List<Node> TrueChildren;
}

, поэтому фактические дочерние узлы находятся в другом объекте.

Не могу сделать шаблон TreeView для работы с ним. Похоже, мне нужны круговые шаблоны, что невозможно в WPF. Я чувствую, что упускаю что-то очевидное.

1 Ответ

2 голосов
/ 08 января 2012

Это не обязательно циклично, это только циклически, если Connector.Children содержит ссылку на узел выше по текущему пути узла (и даже это должно быть как-то обработано с помощью виртуализации).

Обычно вам просто нужно создать два HierarchicalDataTemplates в ресурсах TreeView без каких-либо x:Key, но DataType с соответствующим типом.

<TreeView.Resources>
    <HierarchicalDataTemplate DataType="{x:Type local:Node}"
                              ItemsSource="{Binding Connector}">
        <TextBlock Text="{Binding Name}"/>
    </HierarchicalDataTemplate>

    <HierarchicalDataTemplate DataType="{x:Type local:Connector}"
                              ItemsSource="{Binding TrueChildren}">
        <TextBlock Text="{Binding Name}"/>
    </HierarchicalDataTemplate>
<TreeView.Resources>

(Использование x:Type в DataType очень важно, если вы хотите узнать, зачем читать ссылку на свойство )

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