Ich habe ein lästiges Problem mit WPF-Bindung. Im Grunde deklariere ich ein FrameworkElement in meiner UserControl-Ressourcen, aber dieses Element scheint nicht benachrichtigt zu werden, wenn der DataContext des übergeordneten UserControl ändert.
Im Grunde habe ich in meinem UserControl ein Popup im ItemTemplate für ein ItemsControl. In diesem Popup musste ich an etwas im ViewModel der übergeordneten Ansicht binden, also habe ich mir einen cleveren Trick ausgedacht. In Anlehnung an CollectionViewSource dachte ich mir, ich binde das ViewModel der übergeordneten View an eine Ressource und verwende diese Ressource dann, um das ViewModel aus dem DataTemplate zu erreichen, etwa so:
<UserControl.Resources>
<cont:ViewModelSource Source="{Binding}" x:Key="ParentViewModel"/>
</UserControl.Resources>
Damit ich sie später verwenden kann:
CommandParameter="{Binding ViewModel.OpenEntity, Source={StaticResource ParentViewModel}}"
Das alles scheint zu funktionieren außer dass der DataContext auf der ViewModelSource nicht zurückgesetzt wird, wenn der DataContext des UserControls zurückgesetzt wird. Im Moment mache ich diese Arbeit hackily: Einstellung der Ressource DataContext in Code-behind auf die UserControl DataContextChanged Ereignis.
Ich habe einen Blick in Reflector geworfen, um zu sehen, wie CollectionViewSource dies tut, aber es scheint nichts Besonderes zu sein.
Weiß jemand, warum das passiert oder wie ich es beheben kann?