【问题标题】:WPF - adding a node to a treeview and saving it as XMLWPF - 将节点添加到树视图并将其保存为 XML
【发布时间】:2011-05-14 17:34:56
【问题描述】:

我有以下代码来打开 XML 文件并将其绑定到 TreeView,但是如何将子节点或父节点添加到所选节点?谢谢。

<Window.Resources>
    <HierarchicalDataTemplate x:Key="NodeTemplate">
        <HierarchicalDataTemplate.ItemsSource>
            <Binding XPath="child::*" />
        </HierarchicalDataTemplate.ItemsSource>
        <TextBlock Text="{Binding Path=Name}" />
    </HierarchicalDataTemplate>
    <XmlDataProvider x:Key="xmlDataProvider"></XmlDataProvider>
</Window.Resources>
<Grid>
    <TreeView Margin="0,24,0,143"
              Name="treeView1"
              Background="AliceBlue"
              ItemsSource="{Binding Source={StaticResource xmlDataProvider}, XPath=*}"
              ItemTemplate= "{StaticResource NodeTemplate}"/>

    <DockPanel Height="59"
               Name="dockPanel1"
               VerticalAlignment="Bottom"
               Background="AliceBlue"></DockPanel>
    <DockPanel Height="23"
               Name="dockPanel2"
               VerticalAlignment="Top"
               Background="AliceBlue">
        <Button Height="23"
                Name="button1"
                Width="75"
                Click="button1_Click">Open</Button>
    </DockPanel>
</Grid>

Button1 事件:

            Microsoft.Win32.OpenFileDialog open = new Microsoft.Win32.OpenFileDialog();
            open.Filter = "XML Files (*.xml)|*.xml";
            if (open.ShowDialog(this) == true)
            {
                XmlDocument x = new XmlDocument();
                x.Load(open.FileName);
                XmlDataProvider dataProvider = this.FindResource("xmlDataProvider") as XmlDataProvider;
                dataProvider.Document = x;
            }

【问题讨论】:

  • 你能补充更多信息吗!!你想用 button1.click 事件来做这件事吗?有什么问题?
  • 我要做的是给一个节点添加一个子节点或者在选中的节点上给它添加一个父节点。
  • 我不会使用 XmlDataProvider。相反,我会创建一个 clr 对象集合并将它们绑定到树视图。

标签: c# wpf xml treeview


【解决方案1】:

类似这样的:

XmlNode selected_xNode = treeView1.SelectedItem as XmlNode;
if (selected_xNode != null)
{
    XmlNode parent_xNode = selected_xNode.ParentNode;
    if (parent_xNode != null)
    {
        XmlElement new_xElement = selected_xNode.OwnerDocument.CreateElement("New_Node");
        parent_xNode.AppendChild(new_xElement);
    }

}

您将新节点添加到您的 XmlDocument 并忘记树视图。 TreeView 仅显示您的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 2012-04-05
    • 2011-09-28
    • 2013-03-25
    • 1970-01-01
    • 2012-02-10
    相关资源
    最近更新 更多