xamarin - Xamarin窗体无法更改Listview SelectedItem上的图像

标签 xamarin mvvm xamarin.forms

我在listview中有一个标签和图像。我必须在列表 View 上选择一个项目时更改图像。在viewmodel中选择项目时,我正在获取图像名称和标签文本的当前值,但无法将图像更改为新图像。我已经更改了图像后调用了onproperty。但是值未更新。请帮助..

<StackLayout >
            <ListView x:Name="ser_area_list" HasUnevenRows="True"  ItemsSource="{Binding Servicearealist }" SelectedItem="{Binding dd}" >
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <ViewCell.View>
                                <StackLayout Orientation="Horizontal" >                                         
                                    <Image Source="{Binding ImageName}" WidthRequest="30" HeightRequest="30"  />
                                    <Label Text="{Binding area}" VerticalTextAlignment="Center" />
                                </StackLayout>
                            </ViewCell.View>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>                
        </StackLayout>

View 模型:
 public class PopChkVM : INotifyPropertyChanged
{        
    public event PropertyChangedEventHandler PropertyChanged;
    public List<HSA_value> servicearealist = new List<HSA_value>();

    HSA_value ab = new HSA_value();
    public HSA_value dd
    {
        get
        {
            return ab;
        }
        set
        {
            ab = value;

            if (ab == null)
                return;

            OnPropertyChanged("dd");
            Debug.WriteLine(ab);
            ab.ImageName = "checkedbox.png";
            OnPopertyChanged("ImageName");                                  

        }
    }        

    string imagename;
    public string ImageName
    {
        set
        {
            imagename = value;

            OnPopertyChanged("ImageName");

        }
        get
        {
            return imagename;
        }
    }

    void OnPopertyChanged(string ImageName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(ImageName));
    }         

    public List<HSA_value> Servicearealist
    {
        get { return servicearealist; }
        set
        {
            servicearealist = value;
            OnPropertyChanged("Servicearealist");
        }
    }
    public PopChkVM()
    {
        GetHomeServiceAreas();
    }

    protected virtual void OnPropertyChanged(string servicearealist)
    {
        if (PropertyChanged == null)
            return;

        PropertyChanged(this, new PropertyChangedEventArgs(servicearealist));
    }

    private async void GetHomeServiceAreas()
    {

        RestClient dataService = new RestClient();
        var items = await dataService.GetServiceArea();
        if (items.status.Equals("success"))
        {
            Servicearealist = new List<HSA_value>();
            foreach (HSA_Data data in items.data)
            {
                HSA_value hSA_Value = new HSA_value();
                hSA_Value.area = data.area;
                hSA_Value.ImageName = "unchecked.png";
                Servicearealist.Add(hSA_Value);
            }
        }
        else
        {
            DependencyService.Get<IToast>().LongAlert("No  Data Available!");
        }
    }

}

模型:
public class HSA_value
{         
    public string id { get; set; }
    public string area { get; set; }
    public string ImageName { get; set; }
}

最佳答案

在HSA_value类中执行以下代码

public class HSA_value : INotifyPropertyChanged
{       
public string id { get; set; }
public string area { get; set; }
string imageName = string.Empty;
public string ImageName { 
  get
{
return imageName;
}
 set
{
   imageName = value;
   PropertyChanged(this, new PropertyChangedEventArgs(ImageName));
}
 }
    }

关于xamarin - Xamarin窗体无法更改Listview SelectedItem上的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52835855/

相关文章:

Xamarin Scrollview 滚动条不可见

binding - Xamarin 表单绑定(bind)

Xamarin.Forms 将程序集捆绑为 native 代码

c# - Xamarin:检查 IOS 设备中是否安装了任何特定的应用程序

android - 如何在非 FragmentActivity 上使用 ViewModelProviders.of() 获取 ViewModel?

c# - 在 ViewModel 中具有静态 DbContext 的 WPF 应用程序

wpf databinding datatrigger 为矩形设置动画

xamarin - 如何将 Hex 或 RGB 颜色分配给 Android Converter 中的 MvxColor

xamarin - 在 AppCenter 中设置 android 应用程序签名时的密码

c# - 根据 Xamarin IOS 中的文本大小调整标签