Conflitos de datacontext

<UserControl x:Class="WatermarkTextBox"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d"
             d:DesignHeight="30"
             d:DesignWidth="250">
    <UserControl.Resources>
        <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
    </UserControl.Resources>
    <Border>
        <Grid x:Name="grid">
            <TextBlock Text="{Binding Watermark, FallbackValue=This prompt dissappears as you type...}"
                       Visibility="{Binding ElementName=txtUserEntry, Path=Text.IsEmpty, Converter={StaticResource BooleanToVisibilityConverter}}" />
            <TextBox Name="txtUserEntry"
                     Text="{Binding Text, UpdateSourceTrigger=PropertyChanged}" />
        </Grid>
    </Border>
</UserControl>

O código acima mostra meuWatermarkTextBox ao controle. No código por trás do arquivo, configurei oDataContext. Eu deixei de fora todo o código para os DPs do controle.

public WatermarkTextBox()
{
    InitializeComponent();
    grid.DataContext = this;
}

Eu tive que amarrar oDataContext para a grade, porque caso contrário, oText as propriedades da marca d'água e do texto real não seriam exibidas. O problema agora é que não consigo definir oBackground doBorder fora doGrid.

Eu tentei o código abaixo, mas somente oBackground doBorder está definido e não a marca d'água e o texto real.

public WatermarkTextBox()
{
    InitializeComponent();
    this.DataContext = this;
    grid.DataContext = this;
}

questionAnswers(1)

yourAnswerToTheQuestion