Я новичок в WPF и всех этих магических материалах привязки и datatriggers, поэтому я прошу вас немного помочь.WPF многосвязная фильтрация привязки
У меня есть простое приложение wpf, показанное на рисунке ниже.
Я хочу, чтобы содержимое моего документа отображало условия и фильтр даты. Я уже выяснил, как привязывать видимость строк datagrid в зависимости от кодов событий и флажков (запуск, остановка, ошибка). Но я не могу понять, как реализовать фильтрацию даты. Все, что я хочу, это: когда отмечен флажок «Фильтровать по дате», в моем datagrid только те строки остаются видимыми, у которых есть дата в поле «время сервера» (я думаю, мне нужно как-то его анализировать с даты и времени), равную выбранной группе со списком даты , Могу ли я достичь этого, используя только xaml? Может ли enyone помочь мне сделать это? Вот XAML для моего 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>
просто использовать событие флажка и обновить ObservableCollection в коде позади. – 0x4f3759df