This is a migrated thread and some comments may be shown as answers.

GridView Performance

0 Answers 73 Views
GridView
This is a migrated thread and some comments may be shown as answers.
Eugen Wiens
Top achievements
Rank 1
Eugen Wiens asked on 30 Sep 2012, 10:16 PM
Hallo,

I got problems with the GridView performance.

I have a simple WPF Application with one GridView and one refresh button. The GridView has 4 columns and 100 rows. The ItemsSource of the GridView is an Observable Collection of the type RowViewModel. RowViewModel has 4 properties (1 DateTime and 3 strings). When I push the refresh button, the ItemsSource is cleared and filled again with different objects. On my machine thit takes about 800 to 1000 ms. Here is the XAML code:

<Grid>
    <telerik:RadGridView
        HorizontalAlignment="Left"
        Name="radGridView1"
        VerticalAlignment="Top"
       
Height="561" Width="546">
    </telerik:RadGridView>
    <telerik:RadButton Content="Refresh" Height="23" HorizontalAlignment="Left" Margin="646,152,0,0" Name="radButton1" VerticalAlignment="Top" Width="75" Click="radButton1_Click" />
</Grid>

And here is the code behind:

private const int RowCount = 100;
private int _counter = 0;
private readonly string[] _codes = new [] {"Code Blue", "Code Orange", "Code Yellow", "Code Cyan"};
 
public MainWindow()
{
    InitializeComponent();
 
    CreateRowViewModels();
}
 
public ObservableCollection<RowViewModel> Rows { get; set; }
 
private void CreateRowViewModels()
{
    if (Rows == null)
    {
        Rows = new ObservableCollection<RowViewModel>();
        radGridView1.ItemsSource = Rows;
    }
 
    DateTime d;
    string name;
 
    if (_counter % 2 == 0)
    {
        d = new DateTime(2012, 1, 1);
        name = "Mr. Black";
    }
    else
    {
        d = new DateTime(2012, 6, 1);
        name = "Mr. White";
    }
 
    Rows.Clear();
 
    for (var i = 0; i < RowCount; i++)
    {
        var row = new RowViewModel
        {
            Name = name + " " + (i + 1),
            Date = d,
            Code = _codes[i % 4],
            Error = ""
        };
        Rows.Add(row);
    }
 
    _counter++;
}
 
private void radButton1_Click(object sender, RoutedEventArgs e)
{
    CreateRowViewModels();
}

Nothing special here, why does it take about 1 second to refresh the ItemsSource collection?

Thank you for the help,

Eugen

No answers yet. Maybe you can help?

Tags
GridView
Asked by
Eugen Wiens
Top achievements
Rank 1
Share this question
or