Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[erledigt] DataGridColumnHeader mit Filter-Funktion
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5409

Themenstarter:

[erledigt] DataGridColumnHeader mit Filter-Funktion

beantworten | zitieren | melden

Hi!

Ich würde gerne meine Spalten-überschriften um Buttons u. dgl. erweitern, um dem User Spalten-Filter anzubieten.
Stelle ich mir vor wie eine doppelte Kopfzeile: Oben die Spaltenbezeichnung und darunter die Eingabe für den Filter.

Ich kann zwar ein ControlTemplate auf den ColumnHeader draufmachen, aber dann ist die Sortier-Funktionalität weg, also dass der sortiert, wenn man auf den oberen ColumnHeader klickst.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von ErfinderDesRades am .
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
morbus85
myCSharp.de - Member



Dabei seit:
Beiträge: 84

beantworten | zitieren | melden

Servus,

hab auch eine Zeit lang gesucht, bis ich auf Filtering the WPF DataGrid automatically via the header (inline filtering) gestoßen bin.

Man muss die Sache richtig konfigurieren und der Filter hat keine Probleme bei 600 oder 4000 Elementen.
private Nachricht | Beiträge des Benutzers
morbus85
myCSharp.de - Member



Dabei seit:
Beiträge: 84

beantworten | zitieren | melden

ODer suchst du etwas wie die Janus Controls? Die haben zwar nur für Win Forms, aber es wird auch bald eine WPF Lösung angekündigt.
Deren Filterfunktion bzw. deren GridControl ist super gelöst, besonders die Möglichkeit zu suchen und zu filtern.
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5409

Themenstarter:

beantworten | zitieren | melden

Das CodeProject-Teil läuft bei mir nicht, weil meine 2008-er Installation rumzickt.
Und FW4, wassich einsetze, kennt kein DataGridHeaderBorder X(

Edit: auf 2010 konvertiert läufts jetzt doch (sieht bisser komisch aus) - aber ist halt das falsche Framework.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von ErfinderDesRades am .
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5409

Themenstarter:

beantworten | zitieren | melden

mit einem DataTemplate kann man als Header einsetzen, was man will, und das tangiert die Sortier-Funktionalität ühaupt nicht!

    <DataGrid hlp:GridEx.Range="b4 c" ItemsSource="{Binding Path=Logs}" AutoGenerateColumns="False" VirtualizingStackPanel.VirtualizationMode="Recycling"  IsReadOnly="True" >
      <DataGrid.Columns>
        <DataGridTextColumn 
          Binding="{Binding Path=LogLevel}" 
          Header="{Binding Path=Logmonitor.ReadParam, Source={StaticResource MainModel}}" >
          <DataGridTextColumn.HeaderTemplate>
            <DataTemplate DataType="{x:Type my:LogReadParams}">
              <ComboBox ItemsSource="{Binding Path=LogLevels}" DisplayMemberPath="Item1" />
            </DataTemplate>
          </DataGridTextColumn.HeaderTemplate>
        </DataGridTextColumn>
        <DataGridTextColumn Binding="{Binding Path=TimeStamp}" Header="TimeStamp" />
<!-- usw. -->
nervig nur, dass der Xaml-Designer einen total falschen DataContext anbietet, wenn man das Binding für den Header setzen will.
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers