gpt4 book ai didi

wpf - 将 XML 数据绑定(bind)到 WPF TreeView 控件

转载 作者:行者123 更新时间:2023-12-01 18:24:39 25 4
gpt4 key购买 nike

我花了很多时间试图弄清楚如何将我的 XML 文件中的数据绑定(bind)到 TreeView 控件,但我不知道从哪里开始。我什至尝试过 Two-way binding of Xml data to the WPF TreeView和 Josh Smith 在 codeproject 上的代码示例,但仍然不明白如何开始!!!

我在文件“C:\SPDependencies.xml”中有 XML(如果需要,我可以更改格式)!!!:

  <node type="SPDependencies" Name="SPDependencies">
<node type="StoredProc" Name="SP1">
<node type="OperationType" Name="Type1">
<node type="TableName" Name="Table1"/>
<node type="TableName" Name="Table2"/>
</node>
<node type="OperationType" Name="Type2">
<node type="TableName" Name="Table1"/>
<node type="TableName" Name="Table2"/>
</node>
.....
</node>
<node type="StoredProc" Name="SP2">
<node type="OperationType" Name="Type1">
...
...
</node>
</node>

我需要在 Treeview 控件中按以下格式显示:

<SP1>
<Type1>
<Table1>
<Table2>
<Table3>
<Type2>
<Table1>
<Table2>
<Table3>
<SP2>
<Type1>
........

谢谢,阿比。

最佳答案

给定以下 xml 文件:

<node type="SPDependencies" Name="SPDependencies">
<node type="StoredProc" Name="SP1">
<node type="OperationType" Name="Type1">
<node type="TableName" Name="Table1"/>
</node>
<node type="OperationType" Name="Type2">
<node type="TableName" Name="Table1"/>
</node>
</node>
<node type="StoredProc" Name="SP2">
<node type="OperationType" Name="Type1">
</node>
</node>
</node>

查看:

<Window x:Class="Tree.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Tree"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<local:ViewModel />
</Window.DataContext>
<Window.Resources>
<HierarchicalDataTemplate x:Key="template">
<TextBlock Text="{Binding XPath=@Name}" />
<HierarchicalDataTemplate.ItemsSource>
<Binding XPath="node" />
</HierarchicalDataTemplate.ItemsSource>
</HierarchicalDataTemplate>
</Window.Resources>
<Grid DataContext="{Binding Path=XmlData}">
<TreeView ItemsSource="{Binding}" ItemTemplate="{StaticResource template}">
</TreeView>
</Grid>
</Window>

查看模型:

public class ViewModel
{
public XmlDataProvider XmlData { get; set; }

public ViewModel()
{
XmlData = new XmlDataProvider();
XmlData.Source = new Uri(@"C:\input.xml");
XmlData.XPath = "node";
}
}

输出:

tree view output

如果您只想显示根下面的节点,只需将 XPath 更改为:

XmlData.XPath = "/node/node";

关于wpf - 将 XML 数据绑定(bind)到 WPF TreeView 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/714239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com