I have a method in a DispatcherTimer that refreshes my datagrid's data every 3 seconds. (3 seconds for testing purposes)
The thing is that every time my datagrid gets refreshed, it clears all the data and then loads the data again from my database(obviously). Now my issue is that it creates this "flashy" effect each time the data loads, because of all the rows being cleared and the re-loaded into the datagrid.
So my question is, (after you have taken a look at my code below) is there a better way of loading the data again and again without creating the flashing effect in my datagrid?
My method where I call my data from my WCF service:
public async Task LoadTrucks()
{
using (TruckServiceClient service = new TruckServiceClient())
{
List<ClientItems> truckitems = new List<ClientItems>();
if (dgViewProjects.Items.Count <= 0)
{
foreach (var item in await service.GetTrucksAsync())
{
truckitems.Add(new ClientItems
{
TruckQuoteId = item.QuoteId,
TruckChassisManufacturer = item.ChassisManufacturer,
TruckChassisModel = item.ChassisModel,
TruckStatus = item.Status,
TruckJobNumber = item.JobNumbers,
TruckAddedBy = item.AddedBy,
TruckClient = item.ClientName
});
}
}
dgViewProjects.ItemsSource = (truckitems.ToArray());
}
}
Here I call the LoadTrucks()
method and create my DispatcherTimer:
private async void dgViewProjects_Loaded(object sender, RoutedEventArgs e)
{
await LoadTrucks();
var timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(3);
timer.Tick += new EventHandler(async (object o, EventArgs t) =>
{
dgViewProjects.ItemsSource = null;
await LoadTrucks();
});
timer.Start();
}