WPF - Liaison à l'élément actuel à partir du style d'en-tête de groupe
Je suis quelque chose de WPF noob merci donc de le prendre facile sur moi 😉
Je suis en train de créer un groupe de contrôle DataGrid (WPF toolkit version).
J'ai réussi à créer la source de données, le contrôle DataGrid lui-même, l'objet collectionviewsource et le Style pour le groupe de l'en-tête (qui utilise un expandeur).
Je veux du groupe par une propriété appelée 'Assign_To" et la valeur (la valeur que les éléments groupés part) s'affichent dans l'en-tête. Cependant, je ne peux pas travailler sur la façon de se lier à l'actuel groupe/élément de commande pour faire retour de sa Assign_To de la propriété.
Le plus proche que j'ai eu (voir ci-dessous) est obligatoire pour l'ensemble de l'objet collectionviewsource, qui retourne une valeur fixe pour Assign_To. Quelle serait la bonne façon de se lier à l'élément en cours/groupe afin de retourner la valeur correcte pour 'Assign_To'?
Espère que quelqu'un peut vous aider. Merci!
Andy T.
Voici le code source...
<Window DataContext="{Binding Source={StaticResource SampleDataSource}}"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dg="http://schemas.microsoft.com/wpf/2008/toolkit"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
x:Class="DataGridTest.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480" mc:Ignorable="d">
<Window.Resources>
<CollectionViewSource x:Key="CVS" Source="{Binding MyData}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Assign_To"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
<Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander IsExpanded="True">
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Assign To: "/>
<TextBlock Text="{Binding Source={StaticResource CVS}, Path=Assign_To}"/>
</StackPanel>
</Expander.Header>
<ItemsPresenter/>
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid x:Name="LayoutRoot">
<dg:DataGrid
ItemsSource="{Binding Source={StaticResource CVS}}"
SelectionUnit="CellOrRowHeader"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserResizeRows="False">
<dg:DataGrid.GroupStyle>
<GroupStyle ContainerStyle="{StaticResource GroupHeaderStyle}">
<GroupStyle.Panel>
<ItemsPanelTemplate>
<dg:DataGridRowsPresenter/>
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
</dg:DataGrid.GroupStyle>
</dg:DataGrid>
</Grid>
</Window>
source d'informationauteur Andy T
Vous devez vous connecter pour publier un commentaire.
Merci pour votre réponse. J'ai vraiment l'apprécier et vérifier pour voir si elle fonctionne.
De toute façon, comme il s'avère, après quelques piquer et à les pousser, j'ai travaillé en utilisant XAML. Ce que j'avais été absent est le fait que chaque élément de l'en-tête de groupe est lié à un GroupItem et que la valeur par défaut DataContext de GroupItem est un CollectionViewGroup. À son tour, un CollectionViewGroup a un Éléments de la propriété, qui est une collection et je peux donc obtenir le Assign_To valeur du premier élément de la collection et de l'utiliser dans mon texte d'en-tête. Comme ceci:
paramètres de liaison dépend du type de la Assign_To de la propriété. Les paramètres les plus simples qui pourrait probablement travailler pour vous serait:
pls, vérifiez si un exemple ci-dessous serait travailler pour vous, aussi ce lien WPF Toolkit DataGrid Partie IV: TemplateColumns et de la Ligne de Regroupement pourrait être utile pour vous
code:
xaml: