Я кодирую новый проект в 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 для создания трех столбцов элементов?
К сожалению, чем больше я смотрю на это, тем больше я думаю, что это ошибка в коде MS – AndrewS