Как получить TreeViewItem от объекта HierarchicalDataTemplate?

Просто попробуйте это вместо:

res.sendFile('public/index1.html' , { root : __dirname});

Это сработало для меня. корень: __ dirname примет адрес, где server.js находится в приведенном выше примере, а затем, чтобы перейти к index1.html (в этом случае), возвращаемый путь - это получить каталог, в котором находится общая папка.

31
задан GEOCHET 5 March 2009 в 22:40
поделиться

3 ответа

От Bea Stollnitz запись в блоге об этом, попробуйте

TreeViewItem item = (TreeViewItem)(mainTreeList
    .ItemContainerGenerator
    .ContainerFromIndex(mainTreeList.Items.CurrentPosition));
21
ответ дан 27 November 2019 в 21:54
поделиться

Вам нужен TreeViewItem, потому что вы собираетесь изменить то, что отображается? Если это так, я бы рекомендовал использовать Style для изменения способа отображения элемента вместо использования кода программной части вместо прямого изменения TreeViewItem. Надеюсь, он должен быть чище.

0
ответ дан 27 November 2019 в 21:54
поделиться
TreeViewItem item = (TreeViewItem)(mainTreeList
    .ItemContainerGenerator
    .ContainerFromIndex(mainTreeList.Items.CurrentPosition));

НЕ РАБОТАЕТ (для меня) как mainTreeList.Items.CurrentPosition в древовидной структуре с использованием HierarchicalDataTemplate всегда будет -1.

НИКОГДА НЕ ДЕЛАЕТ ниже, поскольку mainTreeList.Items.CurrentItem в древовидном представлении с использованием HierarchicalDataTemplate всегда будет иметь значение NULL.

TreeViewItem item = (TreeViewItem)mainTreeList
    .ItemContainerGenerator
    .ContainerFromItem(mainTreeList.Items.CurrentItem);

INSTEAD Мне пришлось установить последний выбранный TreeViewItem в перенаправленном событии TreeViewItem.Selected, которое всплывает в представление в виде дерева (сами TreeViewItem не существуют во время разработки, поскольку мы используем HierarchicalDataTemplate).

Событие может быть записано в XAML следующим образом:

<TreeView TreeViewItem.Selected="TreeViewItemSelected" .../> 

Затем последний выбранный TreeViewItem может быть установлен в событии следующим образом:

    private void TreeViewItemSelected(object sender, RoutedEventArgs e)
    {
        TreeViewItem tvi = e.OriginalSource as TreeViewItem;

        // set the last tree view item selected variable which may be used elsewhere as there is no other way I have found to obtain the TreeViewItem container (may be null)
        this.lastSelectedTreeViewItem = tvi;

        ...
     }
31
ответ дан 27 November 2019 в 21:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: