我想在TreeView中显示XmlDocument的内容。 我已经从XMLDocument创建了一个XMLDataProvider:
Parent = new XmlDataProvider() { Document = e.XsdData, XPath = "*" };
并将Parent绑定到TreeView。我正在使用HierarchicalDataTemplate来显示节点的名称:
<TreeView Name="treeView" ItemsSource="{Binding Parent}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="xs:simpleType"
ItemsSource="{Binding XPath=xs:element}">
<TextBlock Text="{Binding XPath=name}"/>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
这是我加载的XML文件的一部分:
<?xml version="1.0"?>
<xs:schema xmlns:cfg="syncAXIS" elementFormDefault="qualified" targetNamespace="syncAXIS" version="0.5" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="LogConfigType">
<xs:all>
<xs:element name="LogfilePath" type="xs:string" />
<xs:element name="Loglevel">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Error" />
<xs:enumeration value="Warn" />
<xs:enumeration value="Info" />
<xs:enumeration value="Debug" />
<xs:enumeration value="Trace" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="EnableConsoleLogging" type="xs:boolean" />
<xs:element name="EnableFilelogging" type="xs:boolean" />
<xs:element name="MaxLogfileSize" type="xs:positiveInteger" />
<xs:element name="MaxBackupFileCount" type="xs:nonNegativeInteger" />
</xs:all>
</xs:complexType>
<xs:simpleType name="IPAddressType">
<xs:restriction base="xs:string">
<xs:pattern value="(([01][0-9][0-9]|2[0-4][0-9]|25[0-5]|[0-9][0-9]|[0-9])\.){3}([01][0-9][0-9]|2[0-4][0-9]|25[0-5]|[0-9][0-9]|[0-9])" />
</xs:restriction>
</xs:simpleType>
TreeView未更新/从未显示。 DataContext已正确设置为我的ViewModel:
private XMLEditorViewModel viewModel;
public MainWindow()
{
viewModel = new XMLEditorViewModel();
DataContext = viewModel;
InitializeComponent();
}
答案 0 :(得分:1)
解决方案是
使用ItemsSource = Parent.Document而不是ItemsSource = Parent
答案 1 :(得分:0)
此article和Source Code可能会帮助您