У меня есть BoxView, цвет которого я хочу изменить, когда пользователь нажимает на него. Я создал BoxView под названием tapView и установил GestureRecognizer следующим образом:

var tapGestureRecognizer = new TapGestureRecognizer();
tapGestureRecognizer.Tapped += (s, e) => {
    // handle the tap
    OnTapGestureRecognizerTapped(s, e);
};
tapView.GestureRecognizers.Add(tapGestureRecognizer);

И мой метод работы с краном:

void OnTapGestureRecognizerTapped(object sender, EventArgs args)
{
    var box = (BoxView)sender;
    box.Color = Color.Red;
}

Однако на самом деле это не меняет цвет крана. При отладке и пошаговом выполнении кода он действительно обновляет цвет BoxView в коде, но не на экране. Что мне нужно сделать, чтобы он действительно обновлял цвет при прикосновении?

0
Omni 13 Мар 2018 в 04:42

2 ответа

Лучший ответ

Попробуйте это решение, предполагая, что вы передаете своему BoxView следующее свойство в своем XAML x:Name="myBox"

//This code betlow the page InitializeComponent call
var boxTapHandler = new TapGestureRecognizer();
boxTapHandler.Tapped += ChangeColor;
myBox.GestureRecognizers.Add(boxTapHandler);

Метод изменения цвета, аналогичный, но со ссылкой на BoxView по имени

private void ChangeColor(object sender, EventArgs args)
{
    myBox.Color = Color.red;
}
0
Bejasc 13 Мар 2018 в 04:15

Итак, я обнаружил, что как отдельный код он работает нормально, но в моем приложении MVVM это не так. В итоге я создал прямоугольник сверху, и изменение непрозрачности при касании сработало отлично.

0
Omni 20 Мар 2018 в 13:40