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