WPF DataContextProxy en la sección de recursos

Tengo problemas para usar un DataContextProxy en mi aplicación WPF. Cuando coloco un DataContextProxy en la sección de Recursos de una Cuadrícula, nunca se carga. Si muevo el DataContextProxy fuera de la sección de recursos, todo funciona correctamente.

He estado investigando esto durante algún tiempo y he probado varios métodos para depurar la aplicación.

He colocado un DebugConverter en el control con el que estoy tratando de usar el Proxy. El convertidor de depuración nunca se llama.

He usado WPFSnoop para ver si hay errores de enlace. Obtengo el siguiente error de enlace en el DataContextProxy,

System.Windows.Data Error: 3: No se puede encontrar el elemento que proporciona DataContext. BindingExpression: (sin ruta); DataItem = null; el elemento objetivo es 'Proxy' (Nombre = ''); la propiedad de destino es 'DataContext' (escriba 'Object')

He colocado un punto de interrupción en el evento cargado de mi DataContextProxy. El evento cargado nunca se llama y he colocado un punto de interrupción en el evento DataContextChanged que nunca se llama.

Aquí hay un código de ejemplo para demostrar esto. Obviamente, sé que realmente no necesito usar un DataContextProxy en el 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>

La clase 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>

Respuestas a la pregunta(1)

Su respuesta a la pregunta