Capisco che la programmazione in C# con WPF sia diversa dalle procedure C# tradizionali, quindi la maggior parte del materiale online non indica ciò di cui ho bisogno.Ottieni il nodo padre di un figlio in WPF C# TreeView
Ho un controllo TreeView nella mia finestra WPF e ho nodi padre e nodi figlio in esso. Vorrei memorizzarli in un elenco di tipo Node (id, name, parent).
Ho preso il nome della voce/node selezionati tramite questo:
private void TreeViewItem_OnItemSelected(object sender, RoutedEventArgs e)
{
TreeViewItem item = treeView.SelectedItem as TreeViewItem;
nameTxt.Text = item.Header.ToString();
}
e ho provato ricevendo il capogruppo del nodo figlio immediatamente prima di utilizzare questo:
TreeViewItem item = treeView.SelectedItem as TreeViewItem;
nameTxt.Text = item.Parent.ToString();
Tuttavia, restituisce il padre principale (A) anziché il genitore del figlio (che è 2).
Quali modifiche devo apportare per ottenere il genitore immediato del bambino invece del genitore root? :)
EDIT: Ecco il codice XAML
<TreeView Name="treeView" HorizontalAlignment="Left" Height="564" Margin="10,68,0,0" VerticalAlignment="Top" Width="363">
<TreeViewItem TreeViewItem.Selected="TreeViewItem_OnItemSelected" Header="A" IsExpanded="True" Height="554" FontSize="18">
<TreeViewItem Header="1" />
<TreeViewItem Header="2" />
</TreeViewItem>
</TreeView>
È insolito che sia il genitore del nodo restituito dalla proprietà Parent. Potresti mostrare una versione estesa del codice che hai fornito, forse il problema è altrove – Hristo
Che cosa era il "SelectedItem" quando "item.Parent"? 'restituisce' A'? –
@Chris questo è il codice completo, amico. Sto solo stampando l'elemento selezionato e il genitore in una casella di testo. Continua a mappare sul nodo radice che è A. Tuttavia l'elemento selezionato mostra l'elemento attualmente selezionato, è solo che il genitore continua ad essere mappato sul nodo radice invece del genitore immediatamente prima di – MWUser