Перетаскивание в MAUI не срабатываетC#

Место общения программистов C#
Ответить
Anonymous
 Перетаскивание в MAUI не срабатывает

Сообщение Anonymous »

Я провожу несколько экспериментов с .NET 8 MAUI и пытаюсь создать простой компонент для построения предложения. Рабочий код находится на GitHub.
Изображение

Мне нравится реализовывать перетаскивание. Итак, идея состоит в том, что пользователь может перетащить кнопку (слово) и опустить StackLayout внизу.
На GitHub я создал эту ветку, чтобы показать свою реализацию.
На GitHub я создал эту ветку, чтобы показать свою реализацию.
На GitHub я создал эту ветку, чтобы показать свою реализацию.
p>
Каждая кнопка создается с помощью этой функции

Код: Выделить всё

private Button CreateDraggableButton(string word, bool isSelected = false)
{
var button = new Button
{
Text = word,
FontSize = TextSize,
FontFamily = FontFamily,
BackgroundColor = ButtonColor
};

var dragGesture = new DragGestureRecognizer();
dragGesture.DragStarting += (s, e) => OnDragStarting(s, e, word);
button.GestureRecognizers.Add(dragGesture);

var dropGesture = new DropGestureRecognizer();
dropGesture.Drop += (s, e) => OnDrop(s, e, word);
button.GestureRecognizers.Add(dropGesture);

var tapGesture = new TapGestureRecognizer();
if (isSelected)
tapGesture.Tapped += (s, e) => OnSelectedWordClicked(s, e);
else
tapGesture.Tapped += (s, e) => OnAvailableWordClicked(s, e);
button.GestureRecognizers.Add(tapGesture);

return button;
}
Функции перетаскивания:

Код: Выделить всё

private void OnDragStarting(object sender, DragStartingEventArgs e, string word)
{
e.Data.Properties.Add("Word", word);
e.Data.Properties.Add("Source", sender);
}

private void OnDrop(object sender, DropEventArgs e, string word)
{
if (e.Data.Properties.ContainsKey("Word"))
{
var draggedWord = e.Data.Properties["Word"].ToString();
var sourceButton = e.Data.Properties["Source"] as Button;

if (selectedWords.Contains(draggedWord))
{
selectedWords.Remove(draggedWord);
var dropIndex = selectedWords.IndexOf(word);
selectedWords.Insert(dropIndex, draggedWord);
}
else
{
AvailableWords.Remove(draggedWord);
selectedWords.Add(draggedWord);
}

UpdateWordButtons();
}
}
Я попробовал долгое нажатие, как кто-то предлагал в другом сообщении, но это не тот случай; это все еще не работает. Знаете ли вы, как мне реализовать и правильно использовать перетаскивание?

Подробнее здесь: https://stackoverflow.com/questions/790 ... oesnt-fire
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»