Свойство родительского элемента 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))
{
}
}
Есть несколько способов решить эту проблему; две возможности включают
- Используйте команду
Определите команду в вашей 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" />
- Используйте передачу сообщений
В вашей ViewModel подпишитесь на сообщение:
MessagingCenter.Subscribe<MyViewCell, string> (this, "Delete", (sender, id) => {
// do the appropriate delete action here
});
В вашей ViewCell отправляйте сообщение всякий раз, когда они нажимают кнопку (или что-либо, что вызывает действие) - идентификатор должен быть и идентификатор для конкретного элемента
MessagingCenter.Send<MyViewCell, string> (this, "Delete", ID);