none
hierarchisches DataGrid gesucht

    Frage

  • Hallo,
    ich suche ein DataGrid zum Anzeigen von hierarchischen Daten mit mehreren Spalten.
    Die Anzeige soll ein- und ausklappbar sein (Minus- und Plus-Zeichen).

    Gibt es solche DataGrid kostenlos oder entsprechende "Bauanleitungen"?


    Alexander

    Dienstag, 11. Dezember 2012 11:19

Antworten

  • Hi

    hier ein WPF Beispiel.

    Hatte nur mir die Beispiel nicht genau angesehen sonder bei Google nur Grouping und WPF eingegeben.

    MFG

    Björn

    Mittwoch, 12. Dezember 2012 16:01
  • Hallo Alexander,
    eigentlich hat Palin mit dem Link zum WPF-Beispiel das ja schon beantwortet. Trotzdem hier nochmal  eine Antwort konkret für das Datagrid. Der "Trick" ist der, dass Du die GroupStyle-Eigentschaft des Datagrids definieren musst:

    <DataGrid.GroupStyle>
         <GroupStyle>
             <GroupStyle.Panel>
                 <ItemsPanelTemplate>
                     <DataGridRowsPresenter></DataGridRowsPresenter>
                 </ItemsPanelTemplate>
             </GroupStyle.Panel>
             <GroupStyle.HeaderTemplate>
                 <DataTemplate>
                     <StackPanel>
                         <TextBlock Text="{Binding Path=Name}" />
                     </StackPanel>
                 </DataTemplate>
             </GroupStyle.HeaderTemplate>
             <GroupStyle.ContainerStyle>
                 <Style TargetType="{x:Type GroupItem}">
                     <Setter Property="Margin" Value="15,0,0,0" />
                     <Setter Property="Template">
                         <Setter.Value>
                             <ControlTemplate TargetType="{x:Type GroupItem}">
                                 <Expander IsExpanded="False">
                                     <Expander.Background>
                                         <LinearGradientBrush EndPoint="1,1" StartPoint="0,0">
                                             <GradientStop Color="#FF464CC5" Offset="1"/>
                                             <GradientStop Color="#FFE0E1F0" Offset="0"/>
                                         </LinearGradientBrush>
                                     </Expander.Background>
                                     <Expander.Header>
                                         <StackPanel Orientation="Horizontal" AllowDrop="True">
                                             <TextBlock Text="{Binding Path=Name}" Foreground="Black" FontSize="14" FontWeight="Bold" VerticalAlignment="Bottom"/>
                                             <TextBlock Text=" "></TextBlock>
                                             <TextBlock Text="{Binding Path=ItemCount}" Foreground="Black" FontSize="10" FontWeight="Bold" VerticalAlignment="Bottom"/>
                                             <TextBlock Text=" "></TextBlock>
                                             <TextBlock Text="Datensätze" Foreground="Black" FontSize="10" FontWeight="Bold" VerticalAlignment="Bottom"/>
                                         </StackPanel>
                                     </Expander.Header>
                                     <ItemsPresenter />
                                 </Expander>
                             </ControlTemplate>
                         </Setter.Value>
                     </Setter>
                 </Style>
             </GroupStyle.ContainerStyle>
         </GroupStyle>
     </DataGrid.GroupStyle>

    In meinem Beispiel benutze ich einen Expander, damit ich die Gruppen auf- buw. zuklappen kann.
    Meine View (ICollectionView) hat bedingt durch das ICollectionView-Interface eine Eigenschaft "GroupDescriptions". Diesen kann eine oder mehrere PropertyGroupDescriptions hinzufügen.
    Bei mehreren spielt dann die Reihenfolge des Hinzufügens eine Rolle. Die Margin-Angabe des GroupItems (15,0,0,0) sorgt dabei dann dafür, dass jede Gruppe um 15 Einheiten eingerückt wird.
    Damit kann man dann Hierarchien sehr gut abbilden.

    Gruß

    Detlef

    Donnerstag, 13. Dezember 2012 09:14

Alle Antworten

  • Hi Alexander,

    ich muss gestehen so ganz weiss ich nicht was du möchtest und wo für.

    Für das Grid gibt es zunächst das Grouping mit dem man Sachen zusammen fassen kann.

    Unter den such begriff hab ich dann bei google noch so sachen wie die Controlls von DevExpress oder bei CodeProjekt das Beispiel gefunden.

    MFG

    Björn

    Dienstag, 11. Dezember 2012 21:23
  • Hallo Björn,
    ich suche ein Control für WPF und nicht für Window Forms.

    Alexander

    Mittwoch, 12. Dezember 2012 15:41
  • Hi

    hier ein WPF Beispiel.

    Hatte nur mir die Beispiel nicht genau angesehen sonder bei Google nur Grouping und WPF eingegeben.

    MFG

    Björn

    Mittwoch, 12. Dezember 2012 16:01
  • Hallo Alexander,
    eigentlich hat Palin mit dem Link zum WPF-Beispiel das ja schon beantwortet. Trotzdem hier nochmal  eine Antwort konkret für das Datagrid. Der "Trick" ist der, dass Du die GroupStyle-Eigentschaft des Datagrids definieren musst:

    <DataGrid.GroupStyle>
         <GroupStyle>
             <GroupStyle.Panel>
                 <ItemsPanelTemplate>
                     <DataGridRowsPresenter></DataGridRowsPresenter>
                 </ItemsPanelTemplate>
             </GroupStyle.Panel>
             <GroupStyle.HeaderTemplate>
                 <DataTemplate>
                     <StackPanel>
                         <TextBlock Text="{Binding Path=Name}" />
                     </StackPanel>
                 </DataTemplate>
             </GroupStyle.HeaderTemplate>
             <GroupStyle.ContainerStyle>
                 <Style TargetType="{x:Type GroupItem}">
                     <Setter Property="Margin" Value="15,0,0,0" />
                     <Setter Property="Template">
                         <Setter.Value>
                             <ControlTemplate TargetType="{x:Type GroupItem}">
                                 <Expander IsExpanded="False">
                                     <Expander.Background>
                                         <LinearGradientBrush EndPoint="1,1" StartPoint="0,0">
                                             <GradientStop Color="#FF464CC5" Offset="1"/>
                                             <GradientStop Color="#FFE0E1F0" Offset="0"/>
                                         </LinearGradientBrush>
                                     </Expander.Background>
                                     <Expander.Header>
                                         <StackPanel Orientation="Horizontal" AllowDrop="True">
                                             <TextBlock Text="{Binding Path=Name}" Foreground="Black" FontSize="14" FontWeight="Bold" VerticalAlignment="Bottom"/>
                                             <TextBlock Text=" "></TextBlock>
                                             <TextBlock Text="{Binding Path=ItemCount}" Foreground="Black" FontSize="10" FontWeight="Bold" VerticalAlignment="Bottom"/>
                                             <TextBlock Text=" "></TextBlock>
                                             <TextBlock Text="Datensätze" Foreground="Black" FontSize="10" FontWeight="Bold" VerticalAlignment="Bottom"/>
                                         </StackPanel>
                                     </Expander.Header>
                                     <ItemsPresenter />
                                 </Expander>
                             </ControlTemplate>
                         </Setter.Value>
                     </Setter>
                 </Style>
             </GroupStyle.ContainerStyle>
         </GroupStyle>
     </DataGrid.GroupStyle>

    In meinem Beispiel benutze ich einen Expander, damit ich die Gruppen auf- buw. zuklappen kann.
    Meine View (ICollectionView) hat bedingt durch das ICollectionView-Interface eine Eigenschaft "GroupDescriptions". Diesen kann eine oder mehrere PropertyGroupDescriptions hinzufügen.
    Bei mehreren spielt dann die Reihenfolge des Hinzufügens eine Rolle. Die Margin-Angabe des GroupItems (15,0,0,0) sorgt dabei dann dafür, dass jede Gruppe um 15 Einheiten eingerückt wird.
    Damit kann man dann Hierarchien sehr gut abbilden.

    Gruß

    Detlef

    Donnerstag, 13. Dezember 2012 09:14
  • Hallo AlexanderRi,

    Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert


    Robert Breitenhofer, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Dienstag, 18. Dezember 2012 17:24
    Besitzer