2010-08-02 8 views
2

J'utilise un DataGrid avec une combox qui devrait changer le champ de regroupement. J'utilise le XAML suivant pour définir le modèle de regroupement général:WPF Datagrid groupe expandeur texte - comment lier?

<DataGrid.GroupStyle> 
     <GroupStyle> 
      <GroupStyle.ContainerStyle> 
       <Style TargetType="{x:Type GroupItem}"> 
        <Setter Property="Template"> 
         <Setter.Value> 
          <ControlTemplate TargetType="{x:Type GroupItem}"> 
           <Expander> 
            <Expander.Header> 
             <StackPanel Orientation="Horizontal"> 
              <TextBlock Text="NEEDS TO BE BINDED..."/> 
             </StackPanel> 
            </Expander.Header> 
            <ItemsPresenter /> 
           </Expander> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
       </Style> 
      </GroupStyle.ContainerStyle> 
     </GroupStyle> 
    </DataGrid.GroupStyle> 

Je ne doivent pouvoir « atteindre » qui TextBlock dans le détendeur pour pouvoir sortir le groupement sélectionné appliqué.

S'il vous plaît aider ....

Répondre

0

I J'ai résolu mon problème en ajoutant une classe imbriquée qui contient le groupement actuellement sélectionné (que j'ai défini manuellement ofcourse) + plus de détails dont j'ai besoin. Ensuite, la liaison à la propriété de la classe en utilisant:

<TextBlock Text="{Binding Source={StaticResource GroupingSubject},Path=Name}"/>

Ofcourse que je devais déclarer la classe dans les ressources XAML comme suit:

<local:GroupingName x:Key="GroupingName"/>

Ma classe imbriquée se présente comme suit:

public class GroupingSubject 
{ 
    private static String name = null; 
    private static Object groupType = null; 

    public GroupingSubject() { } 
    public static String Name 
    { 
     get { return name; } 
     set { name = value; } 
    } 

    public static Object GroupType 
    { 
     get { return groupType; } 
     set { groupType = value; } 

    } 

} 

Maintenant tout va bien ...

3

Si vous souhaitez afficher la valeur de la propriété commune étant regroupés par, qui sera disponible en tant que CollectionViewGroup.Name, vous pouvez juste faire:

<TextBlock Text="{Binding Name}"/> 
+0

Merci. J'ai finalement utilisé une approche différente car j'avais besoin d'avoir plus d'informations que je devais chercher manuellement. J'ai posté ma solution. – OrPaz

+0

Je confirme que cela fonctionne et est la bonne façon de le faire. – Benlitz

Questions connexes