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.
Der frühe Apfel fängt den Wurm.
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.
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.
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.
Der frühe Apfel fängt den Wurm.
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.