У меня раздражающая проблема с привязкой WPF. По сути, я объявляю FrameworkElement в ресурсах моего UserControl, но этот элемент, похоже, не получает уведомление при изменении DataContext родительского UserControl.
По сути, в моем UserControl у меня есть всплывающее окно в ItemTemplate для ItemsControl. В этом всплывающем окне мне нужно было привязать что-то в ViewModel родительского представления, поэтому я придумал хитрый трюк. Пользуясь репликой из CollectionViewSource, я решил связать модель представления моего родителя с ресурсом, а затем использовать этот ресурс для перехода к ViewModel из DataTemplate, например, так:
<UserControl.Resources>
<cont:ViewModelSource Source="{Binding}" x:Key="ParentViewModel"/>
</UserControl.Resources>
Чтобы потом я мог использовать его как:
CommandParameter="{Binding ViewModel.OpenEntity, Source={StaticResource ParentViewModel}}"
Казалось бы, все это работает , за исключением , что DataContext в ViewModelSource не сбрасывается, когда DataContext из UserControl сбрасывается. Прямо сейчас я делаю эту работу хакерски: устанавливая DataContext ресурса в code-behind для события DataContextChanged UserControl.
Я посмотрел в Reflector, чтобы увидеть, как CollectionViewSource делает это, но, похоже, он не делает ничего особенного.
Кто-нибудь знает, почему это происходит или как я могу это исправить?