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