J'ai un XML qui doit être databound à WPF TreeView . Ici, le XML peut avoir une structure différente. TreeView doit être suffisamment générique pour pouvoir charger n'importe quelle permutation de la hiérarchie. Cependant, une XAttribute sur les nœuds (appelé Titre) devrait être DataBound au texte d'en-tête de TreeViewItem et pas le nodename.Comment lier l'attribut XML aux noeuds Treeview, pendant la liaison de données XDocument à WPF Treeview
XML à être lié:
<Wizard>
<Section Title="Home">
<Loop Title="Income Loop">
<Page Title="Employer Income"/>
<Page Title="Parttime Job Income"/>
<Page Title="Self employment Income"/>
</Loop>
</Section>
<Section Title="Deductions">
<Loop Title="Deductions Loop">
<Page Title="Travel spending"/>
<Page Title="Charity spending"/>
<Page Title="Dependents"/>
</Loop>
</Section>
</Wizard>
XAML:
<Window x:Class="Wpf.DataBinding.TreeViewer"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Wpf.DataBinding"
Title="TreeViewer" Height="300" Width="300">
<Window.Resources>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Elements}" x:Key="TVTemplate">
<TreeViewItem Header="{Binding Path=Name}"/>
</HierarchicalDataTemplate>
</Window.Resources>
<StackPanel>
<TreeView x:Name="_treeView" Style="{StaticResource TVallExpanded}"
ItemsSource="{Binding Path=Root.Elements}"
ItemTemplate="{StaticResource TVTemplate}" />
</StackPanel>
</Window>
codebehind de XAML qui charge XML à XDocument et se lie à TREEVIEW
public partial class TreeViewer : Window
{
public TreeViewer()
{
InitializeComponent();
XDocument doc = XDocument.Parse(File.ReadAllText(@"C:\MyWizard.xml"));
_treeView.DataContext = doc;
}
}
Ainsi, dans le balisage XAML nous lient le nom à l'en-tête de TreeViewItem.
<TreeViewItem Header="{Binding Path=Name}"/>
Cependant, je veux lier à Titre attribut de la section, la boucle et la page dans le fichier XML ci-dessus. J'ai lu qu'il n'est pas possible d'utiliser XPath lors de la liaison de XDocument. Mais il doit y avoir un moyen de lier l'attribut Title au texte d'en-tête de TreeViewItem. J'ai essayé d'utiliser @Title,. [@ Titre] etc. Mais aucun ne semblait fonctionner. Cette discussion thread on MSDN Forums a une discussion similaire.
Tous les pointeurs seraient très utiles.
Je pense, il devrait Attributs au lieu de l'Attribut ... Au moins pour moi cela ne fonctionne pas ... – binco
Que faire de Binding XPath = @ Title'? –