Datenkontextkonflikte

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

Der obige Code zeigt meinWatermarkTextBox Steuerung. Im Code hinter der Datei habe ich das @ gesetDataContext. Ich habe den gesamten Code für die DPs der Steuerung weggelassen.

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

Ich musste das @ bindDataContext an das Gitter, weil sonst dieText -Eigenschaften sowohl des Wasserzeichens als auch des tatsächlichen Texts werden nicht angezeigt. Das Problem ist jetzt, dass ich das @ nicht einstellen kaBackground desBorder außerhalb desGrid.

Ich habe den folgenden Code ausprobiert, aber dann nur dasBackground desBorder ist gesetzt und nicht das Wasserzeichen und der tatsächliche Text.

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage