Реализация XAML, не требующая выделения кода. Это скопировано из шаблона пользовательского элемента управления, который я создал, и вы, вероятно, захотите сделать этот элемент управления самостоятельно.
Основная идея состоит в том, что в Grid
есть два TextBox
. Верхний - это фактический элемент управления, с которым взаимодействует пользователь, но он невидим (его «Непрозрачность» равна нулю), если он не содержит текста или не имеет фокуса. В нижней части содержится текст подсказки. Он будет виден только тогда, когда сверху нет TextBox
, и он никогда не получит фокус.
Вам, вероятно, придется возиться с привязкой к редактируемой TextBox
, но с этого следует начать.
<Grid>
<TextBox Text="This is the prompt text"
FontStyle="Italic"
Foreground="LightGray"
Focusable="False">
</TextBox>
<TextBox Text="{Binding TextProperty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Focusable="True">
<TextBox.Style>
<Style TargetType="TextBox">
<Setter Property="Opacity"
Value="1" />
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsFocused"
Value="False" />
<Condition Property="Text"
Value="" />
</MultiTrigger.Conditions>
<Setter Property="Opacity"
Value="0" />
</MultiTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</Grid>