天天看點

WPF實作TextBox水印效果

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

WPF實作TextBox水印效果
今天将使用另外一種方式來展示,使用水印的方式。請參考下面的代碼:

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

運作效果截圖:

WPF實作TextBox水印效果

我們可以把這個封裝成一個UserControl,這樣就可以複用了。可以下載下傳我的項目代碼,我已經把它封裝成一個控件。代碼

下載下傳

當然我們也可以使用其他控件實作,例如

Extended WPF Toolkit

WatermarkTextBox

控件。

如果有其他實作方式歡迎與我分享。感謝你的閱讀。