У меня есть метка и изображение внутри списка.Я должен изменить изображение, когда элемент выбран на просмотр списка.Я получаю текущие значения imagename и текста метки, когда элемент выбран в 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>
Viewmodel:
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; }
}