在Tap上更改BoxView颜色

时间:2018-03-13 01:42:36

标签: xamarin xamarin.forms xamarin.android

我有BoxView我希望更改用户点击它时的颜色。我创建了一个名为tapView的BoxView并将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;
}

然而,这实际上并没有改变Tap上的颜色。调试和单步执行代码实际上会更新代码中的BoxView颜色,但不会更新屏幕上的颜色。我需要做什么才能在触摸时实际更新颜色?

2 个答案:

答案 0 :(得分:0)

尝试此解决方案,假设您在XAML中为BoxView提供以下属性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;
}

答案 1 :(得分:0)

所以我发现它作为独立代码可以正常工作,但在我的MVVM应用程序中却没有。我在最上面创建一个盒子并且在水龙头上改变不透明度工作得很好。