Сделайте так, чтобы HierachichalDataTemplate сначала отображал дочерние элементы.(Пост-заказ (LRN)) - PullRequest
0 голосов
/ 30 мая 2018

Я хочу отобразить путь к моему текущему элементу, например так:

Node1 > Node1_1 > Node1_1_1

Путь сохраняется в цепочке родительских элементов, для приведенного выше примера:

Node1_1_1.Parent == Node1_1
Node1_1.Parent == Node1

Я думал, что самый простой способ заархивировать этот результат - использовать HierachichalDataTemplate, который сначала отображает дочерние элементы, а затем сам себя как > Node.Name.Начиная с элемента Node1_1_1.

Проблема в том, что HierachichalDataTemplate сначала отображает текущий DataContext, а затем дочерние элементы.Я в основном хочу архивировать пост-заказ обход моего Parent -дерева.

Есть ли способ архивировать это?Я думал о переопределении шаблона HierachichalDataTemplate, но пока не знаю достаточно о WPF, чтобы архивировать его сам.

1 Ответ

0 голосов
/ 02 июня 2018

Я не совсем уверен, что вы подразумеваете под «отображением пути», но я думаю, вы хотите иметь возможность выбрать элемент в древовидном представлении и показать его путь в отдельном элементе управления текстовым полем, как в проводнике Windows.Если это так, вам нужно отслеживать выбранный элемент и разрешать его родительские отношения вплоть до корня всякий раз, когда выбранный элемент изменяется.

То есть каждый элемент в вашей модели представления должен реализовывать такой родительский интерфейс, как этот(при условии, что каждый элемент viewmodel реализует интерфейс IItem, как показано здесь: https://github.com/Dirkster99/InplaceEditBoxLib/blob/1a25512c7a5c4611809162d625ff9137a4ccb456/source/Solution/SolutionLib/Interfaces/IParent.cs)

public interface IParent
{
   IItem Parent { get; }
}

Этот интерфейс позволяет вам накопить путь, просматривая корень дерева, используя цикл while, подобный следующему:

IItem node = MyTree.SelectedItem;
string path = MyTree.SelectedItem.Name; //Assuming you have a SelectedItem
while (node.Parent != null)
{
  path = path.Parent.Name + " > " + path;
}
...