Your Privacy Matters: We use our own and third-party cookies to improve your experience on our website. By continuing to use the website we understand that you accept their use. Cookie Policy
40
XamGrid refreshing performance
posted

Hi.

We are using large XamGrid. And we have performance problems.
I create Sample. (@v13.1 XamGrid.)

<Grid x:Name="LayoutRoot" Background="White">
<Grid.RowDefinitions>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Rows" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="maxcol" Text="40" VerticalAlignment="Center"></TextBox>
<TextBlock Text="Columns" VerticalAlignment="Center"></TextBlock>
<TextBox x:Name="maxrow" Text="40" VerticalAlignment="Center"></TextBox>
<Button x:Name="button" Width="110">Refresh</Button>
<TextBlock x:Name="res" Width="110" VerticalAlignment="Center"></TextBlock>
</StackPanel>
<ig:XamGrid x:Name="grid"
Grid.Row="1"
AutoGenerateColumns="False"
HeaderRowHeight="Dynamic"
Width="1600"
Height="730">
<ig:XamGrid.Columns>
</ig:XamGrid.Columns>
</ig:XamGrid>
</Grid>


void button_Click(object sender, RoutedEventArgs e)
{

  //Clear Defenision
  this.grid.Columns.Clear();
  foreach (var x in this.grid.Rows)
  {
    this.grid.Rows.Remove(x);
  }

  var cnt = int.Parse(this.maxcol.Text);

  //Create test columns
  for (var i = 0; i < cnt; i++)
  {
    var col = new TextColumn();
    col.IsReadOnly = true;

    col.Key = "[Column" + i.ToString() + "]";
    col.Width = new ColumnWidth(60, false);
    this.grid.Columns.Add(col);
  }

  //Create test rows
  var resource = new ObservableCollection<Dictionary<string,object>>();
  var cntrow = int.Parse(this.maxrow.Text);
  for (var i = 0; i < RowCountSetting; i++)
  {
    var item = new Dictionary<string, object>();
    for (var j = 0; j < cntrow; j++)
    {
      item.Add("Column" + j.ToString(), "test");
    }
    resource.Add(item);
  }
  this.grid.ItemsSource = resource;

  //Measure refresh rate
  var ticks = DateTime.Now.Ticks;
  this.UpdateLayout();
  var ellapsedMilliseconds = (DateTime.Now.Ticks - ticks) /10000;

  //Display result
  res.Text = (ellapsedMilliseconds).ToString() + "[ms]";

}

This program shows about 676 cells.

And use virtualization. but takes time to refresh.(over 1000ms)

Shoud I reduce cells?

Please tell me how gain refresh rate.

Parents Reply Children
No Data