2016-01-13 15 views
0

在將控件添加到網格期間,我遇到性能問題。當我設置添加100個控件時,它在Windows Phone中需要將近2秒,並且它凍結UI。有沒有其他方法可以將自定義控件添加到網格?這是我的代碼:在Windows Phone 8.1上添加控件期間提高性能

private void generateGrid(int size) 
{ 
    int buttonsInColumn = 5; 
    SmallButtonControl smallButton; 
    buttonEdge = screenWidth/buttonsInColumn; 

    for (int i = 0; i < buttonsInColumn; i++) 
     grChoolseBoard.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); 
    for (int j = 0; j < size/buttonsInColumn; j++) 
     grChoolseBoard.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); 

    for (int j = 0; j < size/buttonsInColumn; j++) 
    { 
     for (int i = 0; i < buttonsInColumn; i++) 
     { 
      smallButton = new SmallButtonControl() { Width = buttonEdge, Height = buttonEdge }; 
      smallButton.Text = (j * buttonsInColumn + i + 1).ToString(); 
      smallButton.ButtonBackground = getColorAndEnableState(j * buttonsInColumn + i + 1, _level+1,ref smallButton); 
      smallButton.SetValue(Grid.ColumnProperty, i); 
      smallButton.SetValue(Grid.RowProperty, j); 
      grChoolseBoard.Children.Add(smallButton as SmallButtonControl); 
      smallButton.Tapped += new TappedEventHandler(GoToBoard_Tapped); 
     } 
    } 
} 

回答

0

在C#形式,以避免延遲,同時增加了許多控制,SuspendLayout();忽略的同時,將添加的控件更新UI,然後ResumeLayout();信號通知UI重新開始顯示的變化。我不確定Windows Phone開發是否具有相同的功能。

+0

感謝您的回答。我試着用'等待Dispatcher.RunAsync(CoreDispatcherPriority.High',但它不夠,因爲添加控件到佈局的時間是相同的。 – user2846091