2014-06-29 23 views
6

Non riesco a impostare il datacontext di UserControl (UserControl è nidificato all'interno di un altro UserControl).Set datacontext di child UserControl in WPF

mi hanno la struttura di seguito:

Views/ViewModels:

MainControl <-> MainViewModel <br> 
UserControlA <-> ViewModelA<br> 
UserControlB <-> ViewModelB<br><br> 
ViewModels:<br> 

ViewModelB è una struttura di ViewModelA MainViewModel istanzia ViewModelA e ViewModelB nel ctor.

Visualizzazioni:
MainControl contiene UserControlA, che a sua volta contiene UserControlB MainControl assegna il ViewModelA come il DataContext (Questo funziona come previsto)

<!-- MainControl Xaml--> 
<UserControl x:Name="MainControl"> 

<views:UserControlA DataContext="{Binding ViewModelA}" /> 

</UserControl> 

In UserControlA i fare la stessa cosa come nel MainControl, vincola il datacontext di UserControlB al suo ViewModel che è una proprietà nel ViewModelA Questo non funziona come expe CTED ...

<!-- USerControlA Xaml--> 
    <UserControl> 
    ..... 
    ..... 

    <views:UserControlB DataContext="{Binding DataContext.ViewModelB}" /> 

    </UserControl> 

risposta

6

Cambiare l'associazione per UserControlB a DataContext:

<UserControl> 
    <views:UserControlB DataContext="{Binding ViewModelB}" /> 
</UserControl> 
+0

Grazie Stuart, in realtà si è rivelato essere un misspell stupido da parte mia con il mio modo di era vincolante il DataContext. Ho appena finito di leggere un articolo sul debug degli errori di binding che ha anche aiutato. Qui è [Debugging Binding Errors] http://www.wpf-tutorial.com/data-binding/debugging/
Sono d'accordo con te non c'è bisogno di DataContext.ViewModelB solo utilizzando ViewModel sarebbe sufficiente nel binding. – Anonymous