Hallo
Ich möchte in einem bestehen DataGrid Filtern.
Mein DataGrid:
<DataGrid Margin="11,10,10,10" x:Name="NEUGridView" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" HorizontalGridLinesBrush="Gray"
VerticalGridLinesBrush="LightGray" IsReadOnly="True" HeadersVisibility="Column" HorizontalScrollBarVisibility="Disabled" ScrollViewer.CanContentScroll="True" MinHeight="88" RowHeight="30" Background="White" BorderBrush="#FF5B5B5B" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2">
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Padding" Value="5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border Padding="{TemplateBinding Padding}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.CellStyle>
<DataGrid.Columns>
<DataGridTextColumn Width="80" x:Name="BtZ" Binding ="{Binding ZZZ}" Header="Höhe">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Right"></Setter>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Width="80" x:Name="BtY" Binding ="{Binding YYY}" Header="Breite">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Right"></Setter>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Width="80" x:Name="BtX" Binding ="{Binding YYY}" Header="Länge">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Right"></Setter>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
dies wird beschrieben:
NEUGridList temp = new BVGridList();
temp.XXX= AddGrid_BtX;
temp.YYY= AddGrid_BtY;
temp.ZZZ= AddGrid_BtZ;
NEUGridView.Items.Add(temp);
public class NEUGridList
{
public string XXX{ get; set; }
public string YYY { get; set; }
public string ZZZ { get; set; }
}
in denn felder XXX/YYY/ZZZ sind werte wie 100, 140, 500 etc drin. jetzt möchte ich das nur zeilen mit den werten XXX = 500 und YYY = 140 angezeigt werden.
Ich probiere jetzt schon seit mehrern Stunden rum aber komme leider zu keinem Ergebnis.
Ich Suche in etwas sowas: https://help.syncfusion.com/wpf/datagrid/filterrow
gibt es da auch freeware?
Kann mir jemand Helfen?
* du kannst eine CollectionView verwenden
* du kannst das MVVM-Pattern verwenden um die anzuzeigenden Daten in einem ViewModel zu abstrahieren
Jetzt Verstehe ich nur Bahnhof.
Ich habe jetzt noch folgendes gefunden: https://www.nuget.org/packages/DataGridExtensions/
Wie kann ich dort eine mehrfachauswahl machen anstatt nur einer Input zeile?
Wie witte bereits sagte; wende den MVVM Pattern an.
WPF ist auf die Verwendung dieses Patterns ausgelegt. Verwendest Du ihn nicht dann wirst Du von Workaround zu Workaround stolpern.
Filtern kannst Du dann sehr einfach über eine Linq Expression.
=> Dynamically Build LINQ Expressions
[Artikel] MVVM und DataBinding
Auch das von Dir verlinkte Grid erwartet die Verwendung des MVVM Patterns.
Wie das Grid funktioniert kannst Du einfach der GitHub Seite entnehmen: https://github.com/tom-englert/DataGridExtensions
Ob das Deine Anforrderungen erfüllt; das können wir nicht wissen. Musst selbst raus finden.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code