AllowDrop не работает после перетаскивания на неправильную цель (изображение) в .NET MAUIC#

Место общения программистов C#
Ответить
Anonymous
 AllowDrop не работает после перетаскивания на неправильную цель (изображение) в .NET MAUI

Сообщение Anonymous »

Я столкнулся со странной ошибкой/ошибкой в ​​.met maui при перетаскивании объекта и изменении свойства AllowDrop.
Итак, у меня есть три изображения, одно из которых перетаскивается на другое два и активирует логику проверки.
Вот перетаскиваемое изображение: Как видите, я использую свойства Observable и DragGestureRecouncer. И у меня есть ObservableProperty под названием isAllow, который контролирует, разрешено ли удаление.
Вот определения XAML для двух целевых изображений, куда будет перенесено первое: В моей ViewModel я написал команды для обработки логики перетаскивания:

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

[ObservableProperty]
public double firstImageOpacity = 0.5;

[ObservableProperty]
public double secondImageOpacity = 0.5;

public bool isDroppedSuccessfully;

[ObservableProperty]
public bool isAllow = true;
И методы:

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

[RelayCommand]
private void DragCompleted()
{
if (!isDroppedSuccessfully)
{
IsAllow = true;
}
isDroppedSuccessfully = false;
}

[RelayCommand]
public void DragStarting(Image image)
{
if (image != null)
{
var filename = image.Source.ToString();
TempImage = filename.Replace("File: ", "");
}
}

[RelayCommand]
public void DragOver(Image image)
{
var secondImage = image.Source.ToString().Replace("File: ", "");

IsAllow = true;

if (TempImage == secondImage)
{
IsAllow = true;
return;
}
else
{
if (IsAllow)
{
IsAllow = false;
}
}
}

[RelayCommand]
public void Drop(Image image)
{
IsAllow = true;

isDroppedSuccessfully = true;

image.Opacity = 1;
}

[RelayCommand]
public void DragComplete()
{
if (!isDroppedSuccessfully)
{
IsAllow = true;
}
isDroppedSuccessfully = false;
}
Основная логика — Перетаскиваем изображение на две карточки, при наведении изображения на карточку (Image) проверяем, соответствует ли изображение карточки перетаскиваемому. если изображения совпадают - выполните некоторую логику (установите непрозрачность). Я сделал небольшую тестовую логику для проверки, которая использует [ObservableProperty] isAllow.
Итак, появляется проблема когда я перетаскиваю изображение на неправильное изображение, и в этом случае я больше не могу переместить его даже на правильное изображение.
Другими словами, если пользователь перетаскивает изображение сразу в правильную карту (изображение) логика работает нормально, но если я перетащу и наведу курсор на неправильную карту (изображение), я больше не смогу переместить изображение в правильную карту. (как на картинке ниже)
Есть ли у кого-нибудь идеи? Может быть, это вообще не ошибка, а проблема с моей логикой проверки, и я неправильно реализую проверку?
Gif работающей тестовой программы: https ://imgur.com/a/80v4lZf

Подробнее здесь: https://stackoverflow.com/questions/783 ... n-net-maui
Ответить

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

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

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

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

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