У меня неприятная проблема с привязкой 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 ресурса в код программной части для события DataContextChanged UserControl.
Я заглянул в Reflector, чтобы увидеть, как CollectionViewSource делает это, но, похоже, он не делает ничего особенного.
Кто-нибудь знает, почему это происходит или как я могу это исправить?