मैं ट्री व्यू में मनमानी एक्सएमएल प्रदर्शित करना चाहता हूं, नोड्स को विस्तार और ढहने के साथ, तत्व का नाम और गुणों का सेट और उनके मूल्य दोनों दिखा रहा हूं। मुझे लगता है कि मैं इसे HierarchicalDataTemplate के साथ कर सकता हूं।मैं XML तत्वों और विशेषताओं को प्रदर्शित करने के लिए HierarchicalDataTemplate का उपयोग कैसे कर सकता हूं?
मैं संकेत देखा है HierarchicalDataTemplate उपयोग करने के लिए मनमाने ढंग से एक्सएमएल तत्वों, और पाठ नोड्स, इस तरह प्रदर्शित करने के लिए:
<Window.Resources>
<HierarchicalDataTemplate x:Key="NodeTemplate">
<TextBlock x:Name="tbName" Text="?" />
<HierarchicalDataTemplate.ItemsSource>
<Binding XPath="child::node()" />
</HierarchicalDataTemplate.ItemsSource>
<HierarchicalDataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=NodeType}" Value="Text">
<Setter TargetName="tbName" Property="Text" Value="{Binding Path=Value}"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=NodeType}" Value="Element">
<Setter TargetName="tbName" Property="Text" Value="{Binding Path=Name}"/>
</DataTrigger>
</HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>
<XmlDataProvider x:Key="xmlDataProvider">
</XmlDataProvider>
</Window.Resources>
....
<TreeView Name="treeView1"
ItemsSource="{Binding Source={StaticResource xmlDataProvider}, XPath=*}"
ItemTemplate= "{StaticResource NodeTemplate}"/>
कौन सा अच्छा काम करता है। यह प्रत्येक तत्व के लिए तत्व नाम और पाठ प्रदर्शित करता है। लेकिन मेरा एक्सएमएल जानकारी ले जाने के लिए विशेषताओं का उपयोग करता है। स्कीमा जटिल है और मेरे पास औपचारिक परिभाषा नहीं है, इसलिए अब मैं इसे मनमानी एक्सएमएल के रूप में देख रहा हूं।
नहीं काफी मैं क्या चाहते हैं:
सरलतम दस्तावेज़ इस तरह दिखता है:
<c4soap name="GetVersionInfo" seq="" result="1">
<versions>
<version name="Director"
version="2.1.0.126418"
buildtype=""
builddate="Jun 1 2011" buildtime="14:52:43" />
<version name="MediaManager"
version="2.1.0.126418"
buildtype=""
builddate="Jun 1 2011"
buildtime="14:36:17" />
</versions>
</c4soap>
ऊपर HierarchicalDataTemplate परिभाषा का उपयोग करना, मैं एक प्रदर्शन के लिए इस मिलता है। प्रत्येक नोड के लिए मैं तत्वों का नाम और गुणों और उनके मानों का सेट प्रदर्शित करना चाहता हूं।
<Window.Resources>
<HierarchicalDataTemplate x:Key="NodeTemplate">
<WrapPanel
Focusable="False">
<TextBlock x:Name="tbName" Text="?" />
<TextBlock x:Name="tbAttrs" Text="?" />
</WrapPanel>
<HierarchicalDataTemplate.ItemsSource>
<Binding XPath="child::node()" />
</HierarchicalDataTemplate.ItemsSource>
<HierarchicalDataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=NodeType}" Value="Text">
<Setter TargetName="tbName" Property="Text" Value="{Binding Path=Value}"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=NodeType}" Value="Element">
<Setter TargetName="tbName" Property="Text" Value="{Binding Path=Name}"/>
<Setter TargetName="tbAttrs" Property="Text" Value="{Binding Path=Attributes}"/>
</DataTrigger>
</HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>
<XmlDataProvider x:Key="xmlDataProvider">
</XmlDataProvider>
</Window.Resources>
... जो मुझे थोड़े करीब हो जाता है, लेकिन TreeView में Value="{Binding Path=Attributes}"
परिणाम "(संग्रह)" का एक प्रदर्शन में:
मैं इस कोशिश की।
कैसे मैं बस सब वास्तविक विशेषता नाम और मान, तत्व नाम के साथ-प्रदर्शित कर सकते हैं?
यू आप अंतिम कोड साझा कर सके कृपया? (+1 वहां है) :) –