Свойство родительского элемента Xamarin Forms имеет значение null

У меня есть ViewCell который используется в качестве шаблона элемента для ListView:

ListView details_list = new ListView ();
details_list.ItemTemplate = new DataTemplate(typeof(CartViewCell));

Внутри ViewCell я хотел бы иметь функцию для доступа к itemSource ListView для удаления элемента. Я хотел бы сделать это, получив доступ к Parent собственность внутри ViewCell

ListView parent = (ListView)this.Parent;

Но когда я пытаюсь это сделать, он показывает, что родительский элемент равен нулю. Это неправильный способ использования Parent имущество? Что мне не хватает?

2 ответа

Есть метод переопределения, вы должны вызвать его, тогда родитель не будет нулевым

protected override void OnParentSet()
        {
            object view = Parent;
            base.OnParentSet();

            if (view.GetType() == typeof(Grid))
            {

            }
        }

Есть несколько способов решить эту проблему; две возможности включают

  1. Используйте команду

Определите команду в вашей ViewModel,

// define a command property
public ICommand DeleteCommand { get; set; }

// in your constructor, initialize the command
DeleteCommand = new Command<string>((id) =>
{
  // do the appropriate delete action here
}

а затем в вашем ViewCell привязать к нему

<Button Command="{Binding DeleteCommand}" CommandParameter="{Binding ID}" Text="Delete" />
  1. Используйте передачу сообщений

В вашей ViewModel подпишитесь на сообщение:

MessagingCenter.Subscribe<MyViewCell, string> (this, "Delete", (sender, id) => {
    // do the appropriate delete action here
});

В вашей ViewCell отправляйте сообщение всякий раз, когда они нажимают кнопку (или что-либо, что вызывает действие) - идентификатор должен быть и идентификатор для конкретного элемента

MessagingCenter.Send<MyViewCell, string> (this, "Delete", ID);
Другие вопросы по тегам