Внес правки не в тот код, на мой взгляд. И сделал реализацию фильтрации во View. Использовал Window для удобства, но сути это не меняет.
BaseConnection
using System;
using System.Collections.Generic;
namespace DataFilteredCollection
{
public class BaseConnection
{
public static IEnumerable<AvizModel> GetAvizList()
{
var result = new List<AvizModel>()
// Example Data
{
new AvizModel() {Id=111, TimeStamp = new DateTime(2010, 10, 25)},
new AvizModel() {Id=222, TimeStamp = new DateTime(2014, 10, 25)},
new AvizModel() {Id=333, TimeStamp = new DateTime(2017, 10, 25)},
new AvizModel() {Id=444, TimeStamp = new DateTime(2019, 10, 25)}
};
/// Some code
return result;
}
public static IEnumerable<NIRModel> GetNirList()
{
var result = new List<NIRModel>()
// Example Data
{
new NIRModel() {Id=123, DataNIR=new DateTime(2010, 10, 25) },
new NIRModel() {Id=456, DataNIR=new DateTime(2014, 10, 25) },
new NIRModel() {Id=789, DataNIR=new DateTime(2017, 10, 25) },
new NIRModel() {Id=402, DataNIR=new DateTime(2019, 10, 25) }
};
/// Some code
return result;
}
}
}
DashboardViewModel
using System.Collections.ObjectModel;
namespace DataFilteredCollection
{
public class DashboardViewModel
{
public ObservableCollection<AvizModel> LstAvizuri { get; }
= new ObservableCollection<AvizModel>();
public ObservableCollection<NIRModel> LstNIRuri { get; }
= new ObservableCollection<NIRModel>();
//public DateTime StartDate { get; set; } = DateTime.Now;
//public DateTime EndDate { get; set; } = DateTime.Now;
public DashboardViewModel()
{
foreach (var item in BaseConnection.GetAvizList())
LstAvizuri.Add(item);
foreach (var item in BaseConnection.GetNirList())
LstNIRuri.Add(item);
}
}
}
XAML
<Window x:Class="DataFilteredCollection.ViewWind"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:DataFilteredCollection" xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
Title="ViewWind" Height="450" Width="800">
<Window.Resources>
<x:Static x:Key="DateTime.Now" Member="sys:DateTime.Now"/>
<local:DashboardViewModel x:Key="ViewModel"/>
<CollectionViewSource x:Key="Avizuries"
Source="{Binding LstAvizuri}"
IsLiveFilteringRequested="True"
Filter="FilterAvizuries">
<CollectionViewSource.LiveFilteringProperties>
<sys:String>TimeStamp</sys:String>
</CollectionViewSource.LiveFilteringProperties>
</CollectionViewSource>
<CollectionViewSource x:Key="NIRuries"
Source="{Binding LstNIRuri}"
IsLiveFilteringRequested="True"
Filter="FilterNIRuries">
<CollectionViewSource.LiveFilteringProperties>
<sys:String>DataNir</sys:String>
</CollectionViewSource.LiveFilteringProperties>
</CollectionViewSource>
<Style x:Key="txtStyle" TargetType="TextBlock">
<Setter Property="FontSize" Value="15"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="TextWrapping" Value="Wrap"/>
</Style>
<Style x:Key="txtStyle1" TargetType="TextBlock">
<Setter Property="FontSize" Value="12"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Top"/>
<Setter Property="TextWrapping" Value="Wrap"/>
<Setter Property="Margin" Value="1"/>
</Style>
</Window.Resources>
<Window.DataContext>
<Binding Mode="OneWay" Source="{StaticResource ViewModel}"/>
</Window.DataContext>
<Grid Margin="10,10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Row="0" Grid.Column="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="De la data de: " HorizontalAlignment="Center" VerticalAlignment="Center" Padding="15" FontSize="16"/>
<DatePicker Grid.Column="1" x:Name="dpStartDate" VerticalContentAlignment="Center" VerticalAlignment="Center"
FontSize="20" DisplayDateEnd="{Binding SelectedDate, ElementName=dpEndDate}"
SelectedDateChanged="SelectedDateChanged"
SelectedDate="{Binding Mode=OneWay, Source={StaticResource DateTime.Now}}"/>
</Grid>
<Grid Grid.Row="0" Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="De la data de: " HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="16"/>
<DatePicker x:Name="dpEndDate" Grid.Row="0" Grid.Column="1" FontSize="20"
HorizontalContentAlignment="Stretch" VerticalAlignment="Center" VerticalContentAlignment="Center"
DisplayDateStart="{Binding SelectedDate, ElementName=dpStartDate}"
SelectedDateChanged="SelectedDateChanged"
SelectedDate="{Binding Mode=OneWay, Source={StaticResource DateTime.Now}}"/>
</Grid>
<StackPanel Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2">
<TextBlock Text="Lista cu NIR-uri create." HorizontalAlignment="Center" Margin="0,5" FontSize="18" FontWeight="Bold"/>
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Style="{StaticResource txtStyle}" Margin="5" Text="Serie Factura"/>
<TextBlock Grid.Row="0" Grid.Column="1" Style="{StaticResource txtStyle}" Margin="5" Text="Numar Factura"/>
<TextBlock Grid.Row="0" Grid.Column="2" Style="{StaticResource txtStyle}" Margin="5" Text="Furnizor"/>
<TextBlock Grid.Row="0" Grid.Column="3" Style="{StaticResource txtStyle}" Margin="5" Text="Numar NIR"/>
<TextBlock Grid.Row="0" Grid.Column="4" Style="{StaticResource txtStyle}" Margin="5" Text="TVA Factura"/>
<TextBlock Grid.Row="0" Grid.Column="5" Style="{StaticResource txtStyle}" Margin="5" Text="TVA NIR"/>
<TextBlock Grid.Row="0" Grid.Column="6" Style="{StaticResource txtStyle}" Margin="5" Text="Total Factura"/>
<TextBlock Grid.Row="0" Grid.Column="7" Style="{StaticResource txtStyle}" Margin="5" Text="Data Factura"/>
<TextBlock Grid.Row="0" Grid.Column="8" Style="{StaticResource txtStyle}" Margin="5" Text="Data NIR"/>
<ListBox Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="10" x:Name="lstNir"
ItemsSource="{Binding Mode=OneWay, Source={StaticResource NIRuries}}"
HorizontalContentAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Style="{StaticResource txtStyle}" Text="{Binding SerieFactura}"/>
<TextBlock Grid.Column="1" Style="{StaticResource txtStyle}" Text="{Binding NrFactura}"/>
<TextBlock Grid.Column="2" Style="{StaticResource txtStyle}" Text="{Binding FurnizorId}"/>
<TextBlock Grid.Column="3" Style="{StaticResource txtStyle}" Text="{Binding NrNIR}"/>
<TextBlock Grid.Column="4" Style="{StaticResource txtStyle}" Text="{Binding TVAFactura}"/>
<TextBlock Grid.Column="5" Style="{StaticResource txtStyle}" Text="{Binding TVANIR}"/>
<TextBlock Grid.Column="6" Style="{StaticResource txtStyle}" Text="{Binding TotalFactura}"/>
<TextBlock Grid.Column="7" Style="{StaticResource txtStyle}" Text="{Binding DataFactura, StringFormat='{}{0:dd/M/yyyy}'}"/>
<TextBlock Grid.Column="8" Style="{StaticResource txtStyle}" Text="{Binding DataNIR, StringFormat='{}{0:dd/M/yyyy}'}"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</StackPanel>
<StackPanel Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2">
<TextBlock Text="Lista cu Avize create :" HorizontalAlignment="Center" Margin="0,5" FontSize="18" FontWeight="Bold"/>
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Style="{StaticResource txtStyle1}" Text="Serie"/>
<TextBlock Grid.Row="0" Grid.Column="1" Style="{StaticResource txtStyle1}" Text="Numar"/>
<TextBlock Grid.Row="0" Grid.Column="2" Style="{StaticResource txtStyle1}" Text="Client"/>
<TextBlock Grid.Row="0" Grid.Column="3" Style="{StaticResource txtStyle1}" Text="Produs"/>
<TextBlock Grid.Row="0" Grid.Column="4" Style="{StaticResource txtStyle1}" Text="Cantitate"/>
<TextBlock Grid.Row="0" Grid.Column="5" Style="{StaticResource txtStyle1}" Text="Nume delegat"/>
<TextBlock Grid.Row="0" Grid.Column="6" Style="{StaticResource txtStyle1}" Text="Nr. Auto"/>
<TextBlock Grid.Row="0" Grid.Column="7" Style="{StaticResource txtStyle1}" Text="Ora Incarcare"/>
<TextBlock Grid.Row="0" Grid.Column="8" Style="{StaticResource txtStyle1}" Text="Reprezentant Furnizor"/>
<TextBlock Grid.Row="0" Grid.Column="9" Style="{StaticResource txtStyle1}" Text="Reprezentant Beneficiar"/>
<TextBlock Grid.Row="0" Grid.Column="10" Style="{StaticResource txtStyle1}" Text="Data"/>
<ListBox x:Name="lstAvizeCreate" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="22"
ItemsSource="{Binding Mode=OneWay, Source={StaticResource Avizuries}}" HorizontalContentAlignment="Stretch"
ScrollViewer.CanContentScroll="True">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Style="{StaticResource txtStyle}" Text="{Binding DateFirma.SerieAviz}"/>
<TextBlock Grid.Column="1" Style="{StaticResource txtStyle}" Text="{Binding DateFirma.NrAviz}"/>
<TextBlock Grid.Column="2" Style="{StaticResource txtStyle}" TextWrapping="Wrap" Text="{Binding DateFurnizor.Nume}"/>
<TextBlock Grid.Column="3" Style="{StaticResource txtStyle}" Text="{Binding DenumireProdus}"/>
<TextBlock Grid.Column="4" Style="{StaticResource txtStyle}" Text="{Binding CantitateLivrata}"/>
<TextBlock Grid.Column="5" Style="{StaticResource txtStyle}" Text="{Binding NumeDelegat}"/>
<TextBlock Grid.Column="6" Style="{StaticResource txtStyle}" Text="{Binding NrAuto}"/>
<TextBlock Grid.Column="7" Style="{StaticResource txtStyle}" Text="{Binding OraIncarcare}"/>
<TextBlock Grid.Column="8" Style="{StaticResource txtStyle}" Text="{Binding RepFurnizor}"/>
<TextBlock Grid.Column="9" Style="{StaticResource txtStyle}" Text="{Binding RepBeneficiar}"/>
<TextBlock Grid.Column="10" Style="{StaticResource txtStyle}" Text="{Binding TimeStamp, StringFormat='{}{0:dd/M/yyyy}'}"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</StackPanel>
<Button x:Name="btnBack" Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" Content="Inchide"
HorizontalAlignment="Center" VerticalAlignment="Center" Padding="60,10" Margin="5" Click="btnBack_Click"/>
</Grid>
</Window>
Код позади
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
namespace DataFilteredCollection
{
/// <summary>
/// Логика взаимодействия для ViewWind.xaml
/// </summary>
public partial class ViewWind : Window
{
public ViewWind()
{
InitializeComponent();
}
private void FilterAvizuries(object sender, FilterEventArgs e)
{
AvizModel aviz = (AvizModel) e.Item;
e.Accepted = dpEndDate.SelectedDate == dpStartDate.SelectedDate
|| (aviz.TimeStamp >= dpStartDate.SelectedDate && aviz.TimeStamp <= dpEndDate.SelectedDate);
}
private void FilterNIRuries(object sender, FilterEventArgs e)
{
NIRModel aviz = (NIRModel)e.Item;
e.Accepted = dpEndDate.SelectedDate == dpStartDate.SelectedDate
|| (aviz.DataNIR >= dpStartDate.SelectedDate && aviz.DataNIR <= dpEndDate.SelectedDate);
}
private void SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
((CollectionViewSource)Resources["Avizuries"]).View?.Refresh();
((CollectionViewSource)Resources["NIRuries"]).View?.Refresh();
}
private void btnBack_Click(object sender, RoutedEventArgs e)
{
}
}
}