В этот пример индекс равен 0. Мой код имеет более одного корня. Как получить индекс выбранного корня?
private void TreeView_DragItemsCompleted(TreeView sender, TreeViewDragItemsCompletedEventArgs args)
{
var children = sourceTreeView.RootNodes[0].Children;
if (deletedItem != null)
{
for (int i = 0; i < children.Count; i++)
{
if (children[i].Content.ToString() == deletedItem.Content.ToString())
{
children.RemoveAt(i);
break;
}
}
}
sourceTreeView = null;
deletedItem = null;
}





Get index of RootNodes
Обратитесь к этому делу Ответить. Вы можете создать источник данных с возможностью привязки, такой как ответ на запрос. И привяжите свойство IsSelected к TreeViewItem. Когда элемент выбран, значение IsSelected будет изменено, поэтому вы можете для каждого источника элемента получить индекс выбранного элемента.
<TreeViewItem
AutomationProperties.Name = "{x:Bind Name}"
IsExpanded = "{x:Bind IsExpanded, Mode=TwoWay}"
IsSelected = "{x:Bind IsSelected, Mode=TwoWay}"
ItemsSource = "{x:Bind Children}"
>
<StackPanel Orientation = "Horizontal">
<Image Width = "20" Source = "../Assets/folder.png" />
<TextBlock Margin = "0,0,10,0" />
<TextBlock Text = "{x:Bind Name}" />
</StackPanel>
</TreeViewItem>
Получить индекс
private int GetIndex(ObservableCollection<ExplorerItem> DataSource)
{
int index = 0;
foreach (var item in DataSource)
{
if (item.IsSelected == true)
{
index = DataSource.IndexOf(item);
}
}
return index;
}
Работает ли следующее?