Ich bin neu bei WPF und all diesen magischen Binde- und Datentrigger-Sachen, also bitte ich dich um ein wenig Hilfe.WPF multiple-condition binding filterung
Ich habe eine einfache wpf app auf dem Bild unten gezeigt.
Ich möchte, dass mein Datagrid-Inhalt Bedingungen und Datumsfilter widerspiegelt. Ich habe bereits herausgefunden, wie man die Sichtbarkeit von Datagrid-Zeilen abhängig von Ereigniscodes und Checkboxen (Start, Stop, Fehler) bindet. Aber ich kann nicht herausfinden, wie Datumsfilterung zu implementieren ist. Alles was ich will ist: Wenn das Kontrollkästchen "Nach Datum filtern" aktiviert ist, bleiben in meinem Datagrid nur die Zeilen sichtbar, deren Datum im Feld "Serverzeit" liegt (ich denke, ich muss es irgendwie von datetime parsen) . Kann ich das nur mit Xaml erreichen? Kann Enyone mir helfen, das zu tun? Hier ist XAML für meinen Datagrid:
<DataGrid
Grid.Row="1"
Margin="5"
AutoGenerateColumns="False"
IsReadOnly="True"
ItemsSource="{Binding LogEntries}"
Style="{DynamicResource Helvetica}">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding event_code}" Value="1">
<Setter Property="Background" Value="LightGreen" />
<Setter Property="Visibility" Value="{Binding IsChecked, ElementName=StartShowChecked, Converter={StaticResource BooleanToVisibilityConverter}}" />
</DataTrigger>
<DataTrigger Binding="{Binding event_code}" Value="2">
<Setter Property="Background" Value="LightGray" />
<Setter Property="Visibility" Value="{Binding IsChecked, ElementName=StopShowChecked, Converter={StaticResource BooleanToVisibilityConverter}}" />
</DataTrigger>
<DataTrigger Binding="{Binding event_code}" Value="3">
<Setter Property="Background" Value="#FFEA816F" />
<Setter Property="Visibility" Value="{Binding IsChecked, ElementName=ErrorShowChecked, Converter={StaticResource BooleanToVisibilityConverter}}" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding server_datetime, StringFormat=\{0:dd.MM.yy HH:mm:ss\}}" Header="Server time" />
<DataGridTextColumn Binding="{Binding user_datetime, StringFormat=\{0:dd.MM.yy HH:mm:ss\}}" Header="Client time" />
<DataGridTextColumn
Width="*"
Binding="{Binding log_entry}"
Header="Entry" />
</DataGrid.Columns>
benutzen Sie einfach das Kontrollkästchen Ereignis und aktualisieren Sie Ihre ObservableCollection in Code-behind. – 0x4f3759df