2011-12-13 3 views
0

Я кодирую новый проект в C#/XAML для Windows 8 Metro. Я пытаюсь динамически добавлять ячейки в сетку. Я хочу 3 колонки, а не одну, и я подумал, что Грид сделает трюк. Код, который я использую, приведен ниже. Проблема в том, что каждое новое изображение, добавленное в грид, сначала появляется в одном месте, а затем переходит к другому - или к чему-то; есть много мерцания. Мое содержимое является динамическим (определяется во время выполнения), поэтому я не могу кодировать структуру в XAML. Единственное, что у меня есть в XAML, это сетка с определениями для трех столбцов и одной строки.Код для программного добавления ячеек в Grid вызывает мерцание

StorageFolder picturesFolder = KnownFolders.PicturesLibrary; 
StorageFolderQueryResult queryResult = picturesFolder.CreateFolderQuery(); 
IReadOnlyList<IStorageFolder> folderList = await queryResult.GetFoldersAsync(); 

int row = 0, col = 0; 
foreach (IStorageFolder folder in folderList) 
{ 
    IReadOnlyList<IStorageFile> fileList = await folder.GetFilesAsync(); 
    foreach (IStorageFile file in fileList) 
    { 
     Image image = new Image(); 
     image.Source = await LoadImageFromFileAsync(file); 
     image.Width = 150; 
     image.Height = 150; 
     Grid.SetColumn(image, col); 
     Grid.SetRow(image, row); 
     ++col; 
     if (col == 3) 
     { 
      col = 0; 
      ++row; 
      RowDefinition rd = new RowDefinition(); 
      GridLength gl = new GridLength() { Value = 150 }; 
      rd.Height = gl; 
      grid.RowDefinitions.Add(rd); 
     } 
     grid.Children.Add(image); 
    } 
} 

Итак: как я могу избавиться от мерцания? Есть ли способ настроить шаблон элемента в XAML для создания трех столбцов элементов?

+0

К сожалению, чем больше я смотрю на это, тем больше я думаю, что это ошибка в коде MS – AndrewS

ответ

0

Вам нужны только 3 колонки? В любом случае вам может потребоваться использовать элемент ItemsControl с WrapGrid в качестве элемента ItemsPanelTemplate, вместо этого, как на этом page. Надеюсь это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^