2012-05-03 75 views
0

我认为这是一个非常基本的问题,但我无法找到答案。WPF C# - TreeView中的XML编辑绑定

我使用分层数据模板,装入一个树状的文本块的XML文件:当我双击了

XmlDocument doc = new XmlDocument(); 
doc.Load(open.FileName); 
XmlDataProvider dp = (XmlDataProvider)this.FindResource("nodes"); 
dp.Document = doc; 
dp.XPath = "*"; 

<HierarchicalDataTemplate.Triggers> 
    <DataTrigger Binding="{Binding Path=NodeType}" Value="Element"> 
    <Setter TargetName="textBlock1" Property="Text" Value="{Binding Path=Name}"/> 
    </DataTrigger> 
</HierarchicalDataTemplate.Triggers> 

C#代码打开一个XML textBlock1将出现一个新窗口,其中包含取消和保存按钮,以及包含所选节点的文本框(我想要编辑的内容):

XmlNode selected_xNode = tree.SelectedItem as XmlNode; 
openWindow.textBox1.Text = selected_xNode.Name; 

这工作正常,但我不知道如何将选定的节点名称更改为textbox.text当我点击保存按钮?

我想类似这样的东西:

selected_xNode.Name = textBox1.Text; 

回答

0

我认为你需要打开XML文件,并写入到指定的节点,然后再保存它。 你不能只是尝试改变树。

XmlDocument doc = new XmlDocument(); 
doc.Load(open.FileName); 
  1. 首先,你需要找到的元素,最好是使用LINQ到XML。

  2. 然后再写回来(替换旧的)。

  3. 保存

您已经使用XMLNode所以它会propably足以已发现的节点。

http://www.hookedonlinq.com/LINQtoXML5MinuteOverview.ashx

+0

感谢您的回答,但treeview.SelectedItem是只读的。 我认为解决方案是更改xmlnode.Name,但我不知道如何(它只是ReadOnly)。 –

+0

我会照顾明天!谢谢 –

+0

我发现它:ReplaceChild –