首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文本框wpf中的WaterMark

文本框wpf中的WaterMark
EN

Stack Overflow用户
提问于 2021-12-29 06:14:00
回答 1查看 324关注 0票数 0

这是一个简单的问题,但我无法取得结果。我要在文本框中右边对齐搜索图标,左边的文本是我的文本框样式。

代码语言:javascript
复制
 <StackPanel>
    <TextBox Style="{StaticResource waterMark}" Margin="0 20 0 0"></TextBox>
</StackPanel>

<Window.Resources>
    <SolidColorBrush x:Key="brushWatermarkBackground" Color="White" />
    <SolidColorBrush x:Key="brushWatermarkForeground" Color="LightSteelBlue" />
    <SolidColorBrush x:Key="brushWatermarkBorder" Color="Indigo" />

    <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
    <local:TextInputToVisibilityConverter x:Key="TextInputToVisibilityConverter" />


    <Style x:Key="waterMark" TargetType="TextBox">
        <Setter Property="BorderBrush" Value="Black"></Setter>
        <Setter Property="BorderThickness" Value="1"></Setter>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                        <Grid>
                            <TextBlock Text="enter your text here">
                                          <Image Grid.Row="0" HorizontalAlignment="Right"  Source="/Resources/search.ico" Width="10" Height="10"></Image>
                                <TextBlock.Visibility>
                                    <MultiBinding Converter="{StaticResource TextInputToVisibilityConverter}">
                                        <Binding ElementName="InputText" Path="Text.IsEmpty"></Binding>
                                        <Binding ElementName="InputText" Path="IsFocused"></Binding>
                                    </MultiBinding>
                                </TextBlock.Visibility>
                            </TextBlock>
                            <TextBox x:Name="InputText" Background="Transparent"></TextBox>
                        </Grid>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
  </Window.Resources>

EN

回答 1

Stack Overflow用户

发布于 2021-12-29 07:23:01

我为文本块和图像添加了一个网格,它现在应该可以工作了:

代码语言:javascript
复制
<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
    <Grid>
        <Grid HorizontalAlignment="Stretch">
            <Grid.Visibility>
                <MultiBinding Converter="{StaticResource TextInputToVisibilityConverter}">
                    <Binding ElementName="InputText" Path="Text.IsEmty"/>
                    <Binding ElementName="InputText" Path="IsFocused"/>
                </MultiBinding>
            </Grid.Visibility>
            <TextBlock Text="enter your text here" HorizontalAlignment="Stretch"/>
            <Image HorizontalAlignment="Right"  Source="/Resources/search.ico" Width="10" Height="10"/>
        </Grid>
        <TextBox x:Name="InputText" Background="Transparent"/>
    </Grid>
</Border>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70515754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档