原文: WPF實作TextBox水印效果 在日常項目中,一個TextBox需要輸入使用者名,我們通常的做法是先用一個TextBlock來說明,例如下面的截圖:

<Window.Resources>
<BooleanToVisibilityConverter x:Key="booleanToVisibilityConverter"/>
<Style x:Key="EntryFieldStyle" TargetType="Grid" >
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Margin" Value="20,0" />
</Style>
</Window.Resources>
<Grid Style="{StaticResource EntryFieldStyle}">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<TextBlock
Text="請輸入使用者名" Margin="5,2"
Visibility="{Binding ElementName=txtWatermark, Path= Text.IsEmpty,
Converter={StaticResource booleanToVisibilityConverter}}"/>
<TextBox x:Name="txtWatermark" Background="Transparent" BorderBrush="Indigo"/>
</Grid>
</Grid>
運作效果截圖:
我們可以把這個封裝成一個UserControl,這樣就可以複用了。可以下載下傳我的項目代碼,我已經把它封裝成一個控件。代碼
下載下傳。
當然我們也可以使用其他控件實作,例如
Extended WPF Toolkit的
WatermarkTextBox控件。
如果有其他實作方式歡迎與我分享。感謝你的閱讀。