I go through your sample application and LegendLabel is binding in it. But if we assign View DataContext in code behind (instead of static in XAML) then it does not work even in your sample application.
Let me tell you exact step in your sample application to reproduce this issue.
the following line from your "MainWindow.xaml"
Now assign datacontext in constructor of "MainWindow.xaml.cs" like this.
this.DataContext = new ViewModel();
Why is this behavior? Any alternative to bind LegendLabel when we will have to assign DataContext through code?