Может кто-нибудь помочь мне с приведенным ниже примером кода, над которым я работаю?
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 GridBox = new BoxView() { BackgroundColor = Color.FromHex("#1ceaea") };
var GridImage = new Image() { Source = "folder.png", StyleId= "Image"};
var GridTap = new TapGestureRecognizer();
GridTap.Tapped += async (sender, e) =>
{
string selectedFolder = MainFolder + folder.Name; // Will normally be a propertie stored in an array.
if (Directory.Exists(selectedFolder))
{
//lstProperties.ItemsSource = selectedFolder; // Actual output purpose...
await DisplayAlert("Folder", selectedFolder, "OK").ConfigureAwait(false); // Debug purposes...
Console.WriteLine(selectedFolder); // Debug purposes...
};
};
GridImage.GestureRecognizers.Add(GridTap);
GridFolders.Children.Add(GridBox, newCol, newRow);
GridFolders.Children.Add(GridImage, newCol, newRow);
GridFolders.Children.Add(label, newCol, newRow);
folderIndex += 1;
}
}
Я создал переменную GridTap, которая должна реагировать на жест касания, когда пользователь нажимает на этот конкретный GridImage, для некоторых причина это не работает! Я предполагаю, что это может быть проблема с каждым изображением, не имеющим уникального имени / идентификатора, но я не могу найти способ задействовать его.
Общая идея состоит в том, чтобы иметь элемент сетки, который имеет событие click и папка, на которую похож элемент сетки, будет открыта, но это единственный найденный мной способ, который немного напоминает то, что я хочу сделать