我正在使用Button作为bew在xaml视图中显示带有图像的“添加到购物车”按钮
<Button x:Name="cartbutton" Grid.Row="0" Command="{Binding Source={x:Reference ListItemPage}, Path=BindingContext.CartCommand}" CommandParameter="{Binding .}" HorizontalOptions="End" VerticalOptions="Start" Image="lowim.png" BackgroundColor="Transparent" Margin="0,5,5,0" />
并在MVVM中使用,如下所示
CartCommand = new Command<Resturent>(OnCartCommand);
然后我将MVVM与依赖项注入结合使用,其中我只能在视图模型中获得按钮单击的Icommand,如下所示
public ICommand CartCommand { get; set; }
public async void OnCartCommand(Resturent restoraunt)
{
await DialogService.DisplayAlert("CART DETAILS", "ITEM"+ restoraunt.Name+ "SUCESSFULLY ADDED", "OK");
}
我希望创建一个切换按钮,当我单击按钮时(用户可以通过按下带有图像lowim.png的按钮将商品添加到购物车中,如上所示),然后按钮的图像应该改变(加上另一个图片图标,可以说add.jpg)。在这方面的支持将受到高度赞赏,并感谢您的支持。
答案 0 :(得分:0)
好吧,您要做的就是创建一个像这样的转换器:
public class ConverterAddRemoveImage : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
bool isAddedToCart = (bool)value;
if (isAddedToCart)
{
return "PositiveImage"; //This will be a string
}
else
{
return "NegativeImage"; //This will be a string
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
然后,您需要在XAML页面的XAML资源字典中定义它,如下所示:
<ContentPage.Resources>
<ResourceDictionary>
<common:ConverterAddRemoveImage x:Key="AddRemoveImage" />
</ResourceDictionary>
</ContentPage.Resources>
常见的是转换器所在的名称空间。
图片来源可能是这样的:
Source="{Binding IsAddedToCart, Converter={StaticResource AddRemoveImage}}
添加到购物车的位置是模型中的bool属性,如下所示:
private bool isInCart;
public event PropertyChangedEventHandler PropertyChanged;
public bool IsAddedToCart
{
get
{
return isInCart;
}
set
{
isInCart= value;
NotifyPropertyChanged(nameof(IsAddedToCart));
}
}
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
注意:您的模型类必须继承自INotifyPropertyChanged
界面
现在,一旦您更改模型的bool属性,它将相应地更改图像。
如有任何查询,Goodluck还原