WPF文本与图像(WPF textbox with image)

2019-07-05 16:04发布

我做了WPF登录界面。 在我的登录面板,我有一个登录TextBoxPasswordBox 。 正如下面的第一个图像显示什么,有在登录文本框一点的人的标志,并在密码箱锁。 我设置图像到文本框的背景,然后当我尝试插入一些词进入登录框,言在此改变人类的标志(图像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>

图像A:

图像B:

Answer 1:

我的建议是,你替换每个Textbox's一个DockPanel 。 在他们各自有一个Image作为最左边的项目和一个Textbox的最右边。 然后分别设置图像,用户和锁定。 然后设置的背景TextboxImages透明。 然后,您可以设置你想要的任何风格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 。 其他任何疑问,请让我知道。 如果你复制粘贴上面,它可能看起来不一样,因为我切割掉不相关的部分。



Answer 2:

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


文章来源: WPF textbox with image