Hiérarchique de la liaison de données avec imbriqué ListViews dans WPF
J'ai des données qui a une table de détail. Je veux que les données doivent être présentées dans une liste. Je veux le détail des données pour apparaître comme un imbriquée liste lorsque vous sélectionnez un élément dans la liste d'origine. Je n'arrive pas à comprendre comment obtenir de la liaison de données pour des travaux.
Voici ce que j'ai à ce jour, (le problème est le {Binding Path=FK_History_HistoryItems}
):
<ListView Name="lstHistory" ItemsSource="{Binding Source={StaticResource History}}" SelectionChanged="lstHistory_SelectionChanged">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=Name}" Header="Name" Width="100" />
<GridViewColumn DisplayMemberBinding="{Binding Path=Description}" Header="Description" Width="150" />
<GridViewColumn DisplayMemberBinding="{Binding Path=Total, Converter={StaticResource moneyConvert}}" Header="Total" Width="100" />
<GridViewColumn DisplayMemberBinding="{Binding Converter={StaticResource categoryAggregate}}" Header="Categories" Width="100" />
</GridView>
</ListView.View>
<ListView.Resources>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Border>
<StackPanel>
<Border Name="presenter"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="{TemplateBinding Padding}">
<GridViewRowPresenter />
</Border>
<Border Name="details" Visibility="Collapsed" Margin="5"
BorderBrush="Black" BorderThickness="2">
<StackPanel Margin="5">
<ListView ItemsSource="{Binding Path=FK_History_HistoryItems}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=Ammount}" Header="Ammount" Width="100" />
<GridViewColumn DisplayMemberBinding="{Binding Path=Category}" Header="Category" Width="100" />
</GridView>
</ListView.View>
</ListView>
</StackPanel>
</Border>
</StackPanel>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="details" Property="Visibility" Value="Visible" />
<Setter TargetName="presenter" Property="Background" Value="Navy"/>
<Setter TargetName="presenter" Property="TextElement.Foreground" Value="White" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.Resources>
</ListView>
- Ce que la sortie ne vous obtenez à partir de la liaison ne fonctionne pas? (Et juste pour que vous le savez, "Montant" a un "m"...)
- Il fonctionne pour moi avec les mêmes données de configuration que stackoverflow.com/questions/350214/.... Ce jeu de données et de sources utilisez-vous?
- Il est Compact SQL Server 2008 avec un table d'Historique et de sa table de détail HistoryItems avec un FK rapport appelé FK_History_HistoryItems. Il serait de travailler avec un TreeView et un HierarcicalDataTemplate, mais cela ne semble pas fonctionner ici.
- Juste pour confirmer, vous obtenez la liste de l'Historique montrant correctement et c'est juste un détail qui ne montre pas? Pouvez-vous me montrer comment vous êtes déclarer votre source de données?
InformationsquelleAutor Excel Kobayashi | 2008-12-09
Vous devez vous connecter pour publier un commentaire.
Si je comprends votre question correctement, vous devez lier à la SelectedItem de la liste d'origine:
Et puis définissez le datatemplate/vue en tant que de besoin. Si vous ne souhaitez pas utiliser ElementName pour la liaison, vous pourriez aussi utiliser RelativeSource mais je trouve ElementName est plus facile à lire et à comprendre.
Vous avez besoin de changer votre problème de ligne à la suivante:
Avec ce changement, la télécommande fonctionne à merveille. Je travaille sur quelque chose de semblable en vain. J'aime vraiment votre travail sur ce.
Afin d'obtenir le Déclencheur de travail, Vous devez définir le ControlTemplate TargetType:
Sans le TargetType étant précisé (comme un choix de type), le code XAML rendu sera confus...