2012-05-03 76 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 –