4

我正在做一个WPF登录界面。在我的登录面板中,我有一个登录名TextBox和一个PasswordBox. 如下图第一张所示,登录文本框中有一个小人类标志,密码框中有一个锁。我将图像设置为文本框背景,然后当我尝试在登录框中插入一些单词时,这些单词将覆盖人类徽标(图像 B)。有什么建议可以使它正确吗?

我的 XAML:

 <TextBox Width="380" Height="25" HorizontalAlignment="Center"  Foreground="WhiteSmoke" BorderBrush="Transparent" >
     <TextBox.Background>
       <ImageBrush ImageSource="/icon/user_login.png" AlignmentX="Left" Stretch="None"></ImageBrush>
     </TextBox.Background>
 </TextBox>

图片一:

在此处输入图像描述

图片 B:

在此处输入图像描述

4

2 回答 2

11

我的建议是您将每个替换Textbox'sDockPanel. 其中他们每个人都有一个Image作为最左边的项目和一个Textbox作为最右边的项目。然后将图像分别设置为用户和锁定。Textbox然后将和的背景设置Images为透明。然后,您可以在DockPanel.

编辑 1 - 从工作示例中复制粘贴

代码:

<DockPanel>
    <Button BorderThickness="0" DockPanel.Dock="Left" HorizontalAlignment="Right" Height="28" Width="23">
         <DynamicResource ResourceKey="SearchBar"/>
    </Button> 'This is a button, because I have a custom Style which I am using which makes all the borders go away. And also because I use it to clear the field.
    <TextBox Text="Search..." FontSize="16" HorizontalAlignment="Stretch" Background="Transparent"/>
</DockPanel>

图片:

在此处输入图像描述

通过不设置DockPanel.Dock第二个项目的属性,我告诉它延伸到DockPanel. 如有其他疑问,请告诉我。如果你复制粘贴上面的内容,它可能看起来不一样,因为我剪掉了不相关的部分。

于 2012-12-18T06:22:54.163 回答
0
 <DockPanel Grid.Row="1" Margin="65,24,71,11" HorizontalAlignment="Stretch">
                            <Image Source="/SDPI;component/Image/Profile.png"/>
                            <toolkit:WatermarkTextBox Grid.Row="1" FontSize="16">
                                <toolkit:WatermarkTextBox.Watermark>
                                    <StackPanel Orientation="Horizontal">
                                        <TextBlock Text="Username" FontSize="15" Margin="4,0,0,0" />
                                    </StackPanel>
                                </toolkit:WatermarkTextBox.Watermark>
                            </toolkit:WatermarkTextBox>
                        </DockPanel>
于 2015-11-02T12:25:36.323 回答