WPF 设置TextBox为空时,背景为文字提示。

50 篇文章 2 订阅
28 篇文章 0 订阅

原文地址:http://www.cnblogs.com/tsunami/archive/2011/09/16/2179170.html

<TextBox FontSize="17" Height="26" Margin="230,150,189,0" Name="txt_Account" VerticalAlignment="Top" Foreground="Indigo" TabIndex="0" BorderThickness="1">
            <TextBox.Resources>
                <VisualBrush x:Key="HelpBrush" TileMode="None" Opacity="0.3" Stretch="None" AlignmentX="Left">
                    <VisualBrush.Visual>
                        <TextBlock FontStyle="Italic" Text="请输入用户名"/>
                    </VisualBrush.Visual>
                </VisualBrush>
            </TextBox.Resources>
            <TextBox.Style>
                <Style TargetType="TextBox">
                    <Style.Triggers>
                        <Trigger Property="Text" Value="{x:Null}">
                            <Setter Property="Background" Value="{StaticResource HelpBrush}"/>
                        </Trigger>
                        <Trigger Property="Text" Value="">
                            <Setter Property="Background" Value="{StaticResource HelpBrush}"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </TextBox.Style>
        </TextBox>
效果如图:



WPF(Windows Presentation Foundation)中,如果你想让`TextBox`控件看起来完全透明,你可以通过设置背景颜色和边框样式来实现。以下是步骤: 1. 首先,创建一个`TextBox`元素,并将其初始样式设置为默认的非透明样式。 ```xml <TextBox x:Name="transparentTextBox" Background="Transparent" BorderBrush="{x:Null}" /> ``` 在这里,`Background="Transparent"`将背景设为透明,`BorderBrush="{x:Null}"`去掉边框的颜色,使其透明。 2. 如果你还想让输入文字时的焦点区域也透明,可以使用`Control.Template`来修改模板: ```xml <Style TargetType="TextBox"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="TextBox"> <Grid> <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="CommonStates"> <VisualState Name="Normal" /> <VisualState Name="Focused" /> </VisualStateGroup> </VisualStateManager.VisualStateGroups> <Rectangle Fill="#00FFFFFF" /> <!-- 使用白色填充作为透视线 --> <ContentPresenter HorizontalAlignment="Left" VerticalAlignment="Top"/> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="Transparent" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> ``` 这将在鼠标悬停、聚焦和其他状态时保持背景透明。 请注意,虽然文本框本身变得透明,但是用户仍然能看到他们正在键入的文字,因为文字会显示出来。如果你希望完全看不见键盘输入,那么你需要考虑其他类型的UI组件,如密码框或隐藏输入的`PasswordBox`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值