Wpf: treeview не обновляется во время преобразования xmlnode в treeviewitem
I am new to C# and VS and am trying to convert XmlNode to TreeViewItem and reflect the changes into TreeView in a recursive manner but TreeView is not updated/ not showing the nodes. Below is my TreeView.xaml code:
<TreeView x:Name="DAPITreeView" Margin="5,5,5,-596" Grid.RowSpan="11" Height="829" SelectedItemChanged="DAPITreeView_SelectedItemChanged" > <TreeView.ItemContainerStyle> <Style TargetType="{x:Type TreeViewItem}"> <Setter Property="IsExpanded" Value="True"/> </Style> </TreeView.ItemContainerStyle> </TreeView>
Ниже приведен мой TreeView.xaml.cs:
private void LoadTreeView(string filename) { XmlDocument doc = new XmlDocument(); try { doc.Load(filename + ".xml"); } catch (Exception Err) { System.Windows.Forms.MessageBox.Show(Err.Message); return; } ConvertXmlNodeToTreeNode(doc, DAPITreeView.Items); //Tree View Expand All to be Done } private void ConvertXmlNodeToTreeNode(XmlNode xmlNode, ItemCollection itemCollection) { TreeViewItem newTreeViewItem = null; switch (xmlNode.NodeType) { case XmlNodeType.ProcessingInstruction: case XmlNodeType.XmlDeclaration: break; case XmlNodeType.Element: { newTreeViewItem = new TreeViewItem(); newTreeViewItem.Items.Add(xmlNode.Name); itemCollection.Add(newTreeViewItem); //TreeView not updated here } break; case XmlNodeType.Comment: { newTreeViewItem = new TreeViewItem(); newTreeViewItem.Items.Add(xmlNode.Name); newTreeViewItem = new TreeViewItem(); newTreeViewItem.Items.Add("<!--" + xmlNode.Value + "-->"); } break; } if (xmlNode.Name == "message") { if (xmlNode.ChildNodes.Count > 0) { newTreeViewItem = new TreeViewItem(); newTreeViewItem.Items.Add("dummy"); } return ; } foreach (XmlNode childNode in xmlNode.ChildNodes) { if (newTreeViewItem == null) { newTreeViewItem = new TreeViewItem(); itemCollection.Add(xmlNode.Name); //Only item added to TreeView as #document. newTreeViewItem.Items.Add(xmlNode.Name); } ConvertXmlNodeToTreeNode(childNode, newTreeViewItem.Items); } }
Can anyone suggest me what is missing or needs correction?
Что я уже пробовал:
Я ссылался на многие блоги, но не нашел правильного решения для этой проблемы.
Graeme_Grant
"TreeView не обновляется/ не показывает узлы"
Научились ли вы сначала работать с элементом управления TreeView в макете/прототипе, прежде чем пытаться его использовать? Вы понимаете, как использовать отладчик для проверки правильности установки данных?
Если вы используете модель data-first, а не UI-first, как указано в приведенном выше коде, то с элементом управления TreeView работать гораздо проще. Взгляните на эту статью проекта кода: Упрощение в WPF TreeView элемент с помощью шаблона модель представления [^]