How to get ContentPage's BindingContext from ContentView?

10,022

By the time your constructor is called, the BindingContext might not be initialised yet.

So, you should wait for the BindingContext being changed to perform operations on it.

I think the answer is OnBindingContextChanged event. https://developer.xamarin.com/api/member/Xamarin.Forms.View.OnBindingContextChanged()

Little sample:

        protected override void OnBindingContextChanged ()
        {
            base.OnBindingContextChanged ();

            //BindingContext should not be null at this point
            // and you may add your code here.
        }

Note: If you have a ContentView inside a ContentPage, unless explicitly set by another Control (like when using an ItemTemplate for a ListView) or by your code, the BindingContext of the ContentView is the same as the ContentPage.

So, it shouldn't be necessary to call "Parent".

Let me know if more clarification is needed.

Share:
10,022
Fede Berco
Author by

Fede Berco

Updated on June 04, 2022

Comments

  • Fede Berco
    Fede Berco about 2 years

    I have the following Contentpage.content, where I set certain binding context.

    <StackLayout>
        <local:Post />  
        <local:Comments />
    </StackLayout>
    

    In Post.xaml.cs (ContentView), I've tried to get the binding context of the ContentPage this way but it doesn't work.

    BindingContext = (PostViewModel)Parent.BindingContext;
    

    How can I get the binding context of the ContentPage if I'm standing in a ContentView?