我正在尝试以编程方式将图像添加到列表/数组中,并在for each循环中访问它们以更改其源图像



我一直在尝试将图像添加到数组中,然后访问它们的属性以在循环中更改它们的源图像。

详细信息:我为每个网格元素创建了一个网格,每个网格元素都有一个布局,在这个布局中有一个GridImage,他的源文件夹设置为"ClosedFolder.png",当我单击其中一个布局时,它应该将单击的布局文件夹更改为"OpenFolder.png"。

for (int eachCount = 0; eachCount <= MaxRows / MaxCols; eachCount++)
{
Selectedrid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(80, GridUnitType.Absolute) });
for (int newCol = 0; newCol <= MaxCols; newCol++)
{
for (int newRow = 0; newRow <= MaxRows / MaxCols; newRow++)
{
if (folderIndex >= DirectoryArrayList.Count) { break; }
var folder = DirectoryArrayList[folderIndex];
var label = new Label()
{
Text = folder.Name,
FontSize = 12,
VerticalTextAlignment = TextAlignment.Center,
HorizontalTextAlignment = TextAlignment.Center
};
var GridImage = new Image() { Source = "ClosedFolder.png", StyleId = "Image" };
var GridTap = new TapGestureRecognizer();
var Layout = new StackLayout() { StyleId = "StackContent" };
var folderSelection = _mainFolder + "/" + folder.Name;
GridTap.Tapped += async(object sender, EventArgs e) =>
{
FileHandler.CreateTextFiles(folderSelection, "File_" + FileID + ".txt");
files = FolderOptions.AddFilesToList(folderSelection);
lst.ItemsSource = files;
//foreach (Image img in ImageList) I know this i incorrect, just an example of what I think!
//{
//    img.Source = "ClosedFolder.png";
//}
GridImage.Source = "OpenFolder.png"; // clicked layout gets its openfolder.png
};
Layout.Children.Add(label);
Layout.Children.Add(GridImage);                            
Layout.GestureRecognizers.Add(GridTap);
Selectedrid.Children.Add(Layout, newCol, newRow);
folderIndex += 1;
FileID += 1;
}
}
}

不确定数组的声明以及如何实现它。

我在BasicGrid方法中添加了以下内容。。。

var GridImage = new Image() { Source = "ClosedFolder.png", StyleId = "Image" }; 
var ImageList = new List<Image>{};
ImageList.Add( GridImage );
for (var i = 0; i < ImageList.Count; i++)
{
var img = ImageList[i];
img.Source = "ClosedFolder.png";
} GridImage.Source = "OpenFolder.png"

只是补充说,杰森的信息是我最有可能的方向,但由于我仍在学习,这需要时间,我想在这样做的同时保持开放:-(

最新更新