0

Это мой код:Изменить текст метки при щелчке в ListView

public partial class MyGS: ContentPage { 
    private GestioneSchedeViewModel _viewModel; 

    public MyGS() { 
    InitializeComponent(); 
    BindingContext = _viewModel = new MyGSViewModel(); 
    } 

    private void modifySch(object sender, EventArgs e) 
    { 
    SchedeItem item = (SchedeItem)((Image)sender).BindingContext; 
    if (item == null) { return; } 
    _viewModel.modifyItem(item.realm_id, item.list_id); 
    } 
    } 

    public class MyGSViewModel: INotifyCollectionChanged { 
    public event NotifyCollectionChangedEventHandler CollectionChanged; 

    public ObservableCollection <SchItem> Items {get;private set;} 

    public MyGSViewModel() { 
    Items = new ObservableCollection<SchItem>(); 
    //Item Population 
    } 

    public void modificaItem(int rid, int lid) 
    { 
     SchedeItem myItem = Items[lid]; 
     myItem.name = "New Text"; 
    } 

    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) 
    { 
     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
    } 

    } 

    public class SchItem : INotifyPropertyChanged { 
    public int realm_id {get;set;} 
    public int list_id {get;set;} 
    public int name {get;set;} 

    public event PropertyChangedEventHandler PropertyChanged; 

    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) 
     { 
      PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 

} 

Как я могу изменить текст метки переплетены с именем в ListView на изображение нажмите? На данный момент клик не изменяется, и «Новый текст» не отображается в целевом элементе в списке.

Примечание: XAML here

Примечание: Отладка в устройстве Android

+0

если вы изменяете свойство SchItem, то, что класс должен реализовывать INotifyPropertyChanged – Jason

+0

не работает с внедрением 'INotifyPropertyChanged' в классе SchItem – Segamoto

+0

вы внедряете его правильно? – Jason

ответ

1

Вы должны выполнить метод OnPropertyChanged() в инкубаторе для каждого свойства, чтобы уведомить привязок и ' обновить "текст.

private string name; 

    public string Name 
    { 
     get 
     { 
      return name; 
     } 
     set 
     { 
      if (name == value) 
      { 
       return; 
      } 
      name = value; 
      OnPropertyChanged(); 
     } 
    } 

Не забудьте обновить Binding путь для того, чтобы использовать свойство, а не частное поле ... ({Binding Name})

+0

это работает, спасибо! – Segamoto

 Смежные вопросы

  • Нет связанных вопросов^_^