WPF DataContextProxy na seção de recursos

Estou com problemas para usar um DataContextProxy no meu aplicativo WPF. Quando coloco um DataContextProxy na seção Recursos de uma Grade, ele nunca é carregado. Se eu mover o DataContextProxy para fora da seção de recursos, tudo funcionará corretamente.

Eu tenho investigado isso há algum tempo e tentei vários métodos para depurar o aplicativo.

Eu coloquei um DebugConverter no controle com o qual estou tentando usar o proxy. O conversor de depuração nunca é chamado.

Eu usei o WPFSnoop para ver se há algum erro de ligação. Eu recebo o seguinte erro de ligação no DataContextProxy,

Erro System.Windows.Data: 3: Não é possível localizar elemento que fornece DataContext. BindingExpression: (sem caminho); DataItem = nulo; o elemento de destino é 'Proxy' (Name = ''); propriedade de destino é 'DataContext' (tipo 'Object')

Eu coloquei um ponto de interrupção no evento carregado do meu DataContextProxy. O evento carregado nunca é chamado e eu coloquei um ponto de interrupção no evento DataContextChanged que nunca é chamado.

Aqui está um exemplo de código para demonstrar isso. Obviamente, eu sei que eu realmente não preciso usar um DataContextProxy no TextBox.

<code><Window x:Class="WpfDataContextProxyBug.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfDataContextProxyBug"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <local:DebugConverter x:Key="DebugConverter"/>
    </Window.Resources>
    <Grid>
        <Grid.Resources>
            <local:Proxy x:Key="Proxy" DataContext="{Binding}" />
        </Grid.Resources>

    <TextBox DataContext="{Binding Path=Name, Source={StaticResource Proxy}, Converter={StaticResource DebugConverter}}"/>
    </Grid>
</Window>
</code>

A classe DataContextProxy

<code>public class Proxy : FrameworkElement
{
    public Proxy()
    {
        Loaded += DataContextProxy_Loaded;
        DataContextChanged += Proxy_DataContextChanged;
    }

    void Proxy_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
    {

    }

    void DataContextProxy_Loaded(object sender, RoutedEventArgs e)
    {

    }

}
</code>

questionAnswers(1)

yourAnswerToTheQuestion