Difference Source and Datacontext in wpf












0















DataContext and Source seem to be very similar to me.




  • What are the advantages and disadvantages?

  • When to use which one?


With Source:



<TextBlock Text="{Binding Name, Source={StaticResource Person}}" />


Or the solution with DataContext:



public partial class DataContextSample : Window
{
public string Name {get; set;}
public DataContextSample()
{
InitializeComponent();
this.DataContext = this;
}
}

<TextBlock Text="{Binding Name}" />









share|improve this question




















  • 1





    The certainly most common way of setting a binding's source object is to set a DataContext. It is a dependency property with value inheritance, i.e. all children of the element where it is set will get the same DataContext. It is also automatically set by the framework in certain binding scenarios, e.g. on the item container of an ItemsControls, to the associated item of the ItemsSource collection.

    – Clemens
    Jan 1 at 17:06













  • Besides that, there is not only DataContext and Source, but also RelativeSource and ElementName.

    – Clemens
    Jan 1 at 17:09
















0















DataContext and Source seem to be very similar to me.




  • What are the advantages and disadvantages?

  • When to use which one?


With Source:



<TextBlock Text="{Binding Name, Source={StaticResource Person}}" />


Or the solution with DataContext:



public partial class DataContextSample : Window
{
public string Name {get; set;}
public DataContextSample()
{
InitializeComponent();
this.DataContext = this;
}
}

<TextBlock Text="{Binding Name}" />









share|improve this question




















  • 1





    The certainly most common way of setting a binding's source object is to set a DataContext. It is a dependency property with value inheritance, i.e. all children of the element where it is set will get the same DataContext. It is also automatically set by the framework in certain binding scenarios, e.g. on the item container of an ItemsControls, to the associated item of the ItemsSource collection.

    – Clemens
    Jan 1 at 17:06













  • Besides that, there is not only DataContext and Source, but also RelativeSource and ElementName.

    – Clemens
    Jan 1 at 17:09














0












0








0


1






DataContext and Source seem to be very similar to me.




  • What are the advantages and disadvantages?

  • When to use which one?


With Source:



<TextBlock Text="{Binding Name, Source={StaticResource Person}}" />


Or the solution with DataContext:



public partial class DataContextSample : Window
{
public string Name {get; set;}
public DataContextSample()
{
InitializeComponent();
this.DataContext = this;
}
}

<TextBlock Text="{Binding Name}" />









share|improve this question
















DataContext and Source seem to be very similar to me.




  • What are the advantages and disadvantages?

  • When to use which one?


With Source:



<TextBlock Text="{Binding Name, Source={StaticResource Person}}" />


Or the solution with DataContext:



public partial class DataContextSample : Window
{
public string Name {get; set;}
public DataContextSample()
{
InitializeComponent();
this.DataContext = this;
}
}

<TextBlock Text="{Binding Name}" />






wpf xaml binding






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 1 at 19:28









Erno de Weerd

44.9k96796




44.9k96796










asked Jan 1 at 16:36









CharlieCharlie

6192926




6192926








  • 1





    The certainly most common way of setting a binding's source object is to set a DataContext. It is a dependency property with value inheritance, i.e. all children of the element where it is set will get the same DataContext. It is also automatically set by the framework in certain binding scenarios, e.g. on the item container of an ItemsControls, to the associated item of the ItemsSource collection.

    – Clemens
    Jan 1 at 17:06













  • Besides that, there is not only DataContext and Source, but also RelativeSource and ElementName.

    – Clemens
    Jan 1 at 17:09














  • 1





    The certainly most common way of setting a binding's source object is to set a DataContext. It is a dependency property with value inheritance, i.e. all children of the element where it is set will get the same DataContext. It is also automatically set by the framework in certain binding scenarios, e.g. on the item container of an ItemsControls, to the associated item of the ItemsSource collection.

    – Clemens
    Jan 1 at 17:06













  • Besides that, there is not only DataContext and Source, but also RelativeSource and ElementName.

    – Clemens
    Jan 1 at 17:09








1




1





The certainly most common way of setting a binding's source object is to set a DataContext. It is a dependency property with value inheritance, i.e. all children of the element where it is set will get the same DataContext. It is also automatically set by the framework in certain binding scenarios, e.g. on the item container of an ItemsControls, to the associated item of the ItemsSource collection.

– Clemens
Jan 1 at 17:06







The certainly most common way of setting a binding's source object is to set a DataContext. It is a dependency property with value inheritance, i.e. all children of the element where it is set will get the same DataContext. It is also automatically set by the framework in certain binding scenarios, e.g. on the item container of an ItemsControls, to the associated item of the ItemsSource collection.

– Clemens
Jan 1 at 17:06















Besides that, there is not only DataContext and Source, but also RelativeSource and ElementName.

– Clemens
Jan 1 at 17:09





Besides that, there is not only DataContext and Source, but also RelativeSource and ElementName.

– Clemens
Jan 1 at 17:09












1 Answer
1






active

oldest

votes


















0














A binding with out a specified Source binds to the DataContext property of the element.



The DataContext is a special property which, if not set, is redirected to the element's parent's DataContext. This prevents duplicate xaml (always setting the Source in every binding) and makes all bindings relative so it is easier to change the UI without having to adjust all Sources in the bindings.






share|improve this answer

























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53997137%2fdifference-source-and-datacontext-in-wpf%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    A binding with out a specified Source binds to the DataContext property of the element.



    The DataContext is a special property which, if not set, is redirected to the element's parent's DataContext. This prevents duplicate xaml (always setting the Source in every binding) and makes all bindings relative so it is easier to change the UI without having to adjust all Sources in the bindings.






    share|improve this answer






























      0














      A binding with out a specified Source binds to the DataContext property of the element.



      The DataContext is a special property which, if not set, is redirected to the element's parent's DataContext. This prevents duplicate xaml (always setting the Source in every binding) and makes all bindings relative so it is easier to change the UI without having to adjust all Sources in the bindings.






      share|improve this answer




























        0












        0








        0







        A binding with out a specified Source binds to the DataContext property of the element.



        The DataContext is a special property which, if not set, is redirected to the element's parent's DataContext. This prevents duplicate xaml (always setting the Source in every binding) and makes all bindings relative so it is easier to change the UI without having to adjust all Sources in the bindings.






        share|improve this answer















        A binding with out a specified Source binds to the DataContext property of the element.



        The DataContext is a special property which, if not set, is redirected to the element's parent's DataContext. This prevents duplicate xaml (always setting the Source in every binding) and makes all bindings relative so it is easier to change the UI without having to adjust all Sources in the bindings.







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Jan 2 at 12:54

























        answered Jan 1 at 19:27









        Erno de WeerdErno de Weerd

        44.9k96796




        44.9k96796
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53997137%2fdifference-source-and-datacontext-in-wpf%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            'app-layout' is not a known element: how to share Component with different Modules

            android studio warns about leanback feature tag usage required on manifest while using Unity exported app?

            WPF add header to Image with URL pettitions [duplicate]