首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何改变图片的颜色点击在Xamarin形式?

如何改变图片的颜色点击在Xamarin形式?
EN

Stack Overflow用户
提问于 2019-02-16 11:23:14
回答 3查看 1.8K关注 0票数 1

我有一颗白色的心,我必须在点击时把它换成橙色的心。这是我需要的UI的截图。

就像你在截图中看到的。我知道我必须添加一个白色的心图标,然后一旦我点击它,橙色的心图标应该显示。这是我的密码。

代码语言:javascript
运行
复制
<Image Grid.Row="0" Grid.Column="5" Margin="0,10,0,0" Source="whitehearticon3"/>

但我没有得到任何这方面的例子。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-16 13:02:02

参考我以前的答案,Add overlay color to an image using Xamarin.Forms,关于如何在每个图像上添加一个覆盖颜色。

然后很容易添加一个TapGestureRecognizer命令并像下面这样更改颜色

代码语言:javascript
运行
复制
<customControls:IconView
    Source="monkey"
    Foreground="{Binding myColor}"
    WidthRequest="100"
    HeightRequest="100"
    HorizontalOptions="Center"
    VerticalOptions="Center" >
    <customControls:IconView.GestureRecognizers>
         <TapGestureRecognizer Command="{Binding ChangeColorCommand}"/>
    </customControls:IconView.GestureRecognizers>
</customControls:IconView>

在视图模型上创建一个Color myColor属性,并通过命令对其进行更改

代码语言:javascript
运行
复制
public ICommand ChangeColorCommand { get; private set; }
public Color MyColor
{
    get => _myColor;
    set
    {
        _myColor = value; 
        RaisePropertyChanged();
    }
}

void ChangeColor()
{
    MyColor = Color.Red;

}
票数 0
EN

Stack Overflow用户

发布于 2019-02-16 11:42:45

使用

<ImageButton Source="whitehearticon3.png" Grid.Row="0" Grid.Column="5" Margin="0,10,0,0" />

在资源文件夹中添加2个心脏图标,一个普通图标和一个橙色图标。然后,您所要做的就是引发一个单击事件或命令,并将ImageButton的源更改为橙色图标。

票数 -1
EN

Stack Overflow用户

发布于 2019-02-16 12:01:52

为实现这一目标:

您需要资源文件夹中的两个图像。白心缩3.png和粉红心缩3.png

应该有一个布尔属性,当我们点击心脏图标时,这个属性会改变。

代码语言:javascript
运行
复制
private bool _isLiked;
public bool IsLiked
{
    get { return _isLiked; }
    set
    {
        _isLiked = value;
        OnPropertyChanged("IsLiked");
    }
}

现在,您可以使用图像上的DataTrigger来根据此属性值更改图像源。

代码语言:javascript
运行
复制
<Image Grid.Row="0" Grid.Column="5" Margin="0,10,0,0">
    <Image.GestureRecognizers>
        <TapGestureRecognizer Command="{Binding HeartTapCommand}" NumberOfTapsRequired="1" />
    </Image.GestureRecognizers>
    <Image.Triggers>
        <DataTrigger TargetType="Image" Binding="{Binding IsLiked}" Value="True">
            <Setter Property="Source" Value="pinkhearticon3.png"/>
        </DataTrigger>
        <DataTrigger TargetType="Image" Binding="{Binding IsLiked}" Value="False">
            <Setter Property="Source" Value="whitehearticon3.png"/>
        </DataTrigger>
     </Image.Triggers>
</Image>

在您的ViewModel中,您的HeartTapCommand如下所示:

代码语言:javascript
运行
复制
ICommand HeartTapCommand { get; set; } = new Command (() => { IsLiked = !IsLiked; });

您应该在图像TapGuesture上绑定这个命令,所以当你点击图像时,这个命令将被执行,你可以在你的两个心脏图标之间切换。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54722525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档