Q:

Xamarin Forms XAML ContextAction Binding to C# in ViewCell

I have the following XAML working to bind to a delete command in my view model:
        <TextCell.ContextActions>
          <MenuItem Command="{Binding Path=BindingContext.DeleteCollectionCommand, Source={x:Reference Name=CollectionListView}}"
                    CommandParameter="{Binding .}"
                    Text="Delete" 
                    IsDestructive="True" />
        </TextCell.ContextActions>

I'm trying to convert it to C# so I can programmatically use it.
I've tried the following but it's not working. What needs to be changed? Is there a better/different way to access the ViewModel DeleteCommand?
    protected override void OnBindingContextChanged()
    {
        base.OnBindingContextChanged();

        var deleteAction = new MenuItem { Text = "Delete", IsDestructive = true }; // red background
        deleteAction.SetBinding(MenuItem.CommandParameterProperty, new Binding("."));
        deleteAction.SetBinding(MenuItem.CommandProperty,
            new Binding("BindingContext.DeleteCommand", BindingMode.Default, null, null, null, "{x:Reference Name=CollectionBeerListView}"));

        ContextActions.Add(deleteAction);
    }

EDIT
I was able to get this working by combining skar's answer and initializing the Cell like this from the parent view:
        lstView.ItemTemplate = new DataTemplate(() =>
        {
            var cell = new DeleteGenericListItemTemplate(page);
            return cell;
        });

Not sure if this is ideal.. but keeps me moving.

A:

if you extend on the text cell to create something like below with a reference to your page you should be able to access your DeleteCommand on your ViewModel through the binding context of the page:
public class CustomCell: TextCell
{
        public CustomCell(Page page)
        {
            var deleteAction = new MenuItem { Text = "Delete", IsDestructive = true }; // red background
            deleteAction.SetBinding(MenuItem.CommandParameterProperty, new Binding("."));
            deleteButton.SetBinding (MenuItem.CommandProperty, new Binding ("BindingContext.DeleteCommand", source: page));
            ContextActions.Add(deleteAction);

        }
}

