如何在wpf文本框中分离背景图像?
我是WPF的新手。在我的项目中,我尝试了带有usericon的用户名文本框 我的XAML代码:-如何在wpf文本框中分离背景图像?,wpf,image,textbox,Wpf,Image,Textbox,我是WPF的新手。在我的项目中,我尝试了带有usericon的用户名文本框 我的XAML代码:- > <TextBox Height="30" Width="180" Margin="67,123,256,158"> > <TextBox.Background> > <ImageBrush ImageSource="Images/User.png" Stretch="None" Alignm
> <TextBox Height="30" Width="180" Margin="67,123,256,158">
> <TextBox.Background>
> <ImageBrush ImageSource="Images/User.png" Stretch="None" AlignmentX="Left" AlignmentY="Center" />
> </TextBox.Background>
> </TextBox>
>
>
>
>
>
但当我输入用户名时,文本框光标从左端开始,两三个字母不可见,看起来很难看。(参见图片)如何在文本框中分离此背景图像
编辑1-
> <Canvas>
> <DockPanel Canvas.Left="115" Canvas.Top="64">
> <Button BorderThickness="0" DockPanel.Dock="Left" HorizontalAlignment="Right" Height="28" Width="23">
> <Button.Background>
> <ImageBrush ImageSource="Images/User.png" Stretch="None" AlignmentX="Left" AlignmentY="Center" />
> </Button.Background>
> </Button>
> <TextBox Height="28" Width="115" HorizontalAlignment="Stretch" Background="Transparent"/>
> </DockPanel>
> </Canvas>
>
>
>
>
>
>
>
>
>
>
我已经按照建议试过了。但问题是按钮和文本框是分开显示的。它看起来不像texbox中的用户图标。当我将光标移动到按钮时,用户图标不可见。帮助我改进代码
用答案编辑2:-
在网格资源中为按钮悬停效果禁用添加以下代码
<Style x:Key="ButtonWithoutHover" TargetType="Button">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Margin" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="border"
BorderThickness="0"
Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="Black" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
并将其添加到wpf窗口XAML
<Canvas >
<Border BorderThickness="2" BorderBrush="DarkBlue" Canvas.Left="307" Canvas.Top="65">
<DockPanel Canvas.Left="115" Canvas.Top="30">
<Button Style="{StaticResource ButtonWithoutHover}" BorderThickness="0" DockPanel.Dock="Left" HorizontalAlignment="Right" Height="28" Width="23">
<Button.Background>
<ImageBrush ImageSource="Images/User.png" Stretch="None" AlignmentX="Left" AlignmentY="Center" />
</Button.Background>
</Button>
<TextBox FontSize="20" BorderThickness="0" Height="28" Width="115" HorizontalAlignment="Stretch" Background="Transparent"/>
</DockPanel>
</Border>
</Canvas>
你可以看看Asryael的答案。 它解决了类似的问题,而无需编辑任何模板。 Asryael的解决方案确实需要一些额外的样式 您也可以尝试以下操作,它只是添加了一些填充:
<TextBox Padding="16,2" Width="115" Height="28">
<TextBox.Background>
<ImageBrush ImageSource="Images/User.png" Stretch="None" AlignmentX="Left"/>
</TextBox.Background>
</TextBox>
您可以按如下所示尝试使用坞面板
<DockPanel>
<Button BorderThickness="0" DockPanel.Dock="Left" HorizontalAlignment="Right" Height="28" Width="25" Margin="200,10,10,10">
</Button>
<TextBox Text="User" FontSize="16" HorizontalAlignment="Stretch" Background="Transparent" Height="28" Width="200" Margin="-80,10,10,10"/>
</DockPanel>
这可能会帮助您您必须进行一些样式编辑,使其看起来更漂亮。您必须删除按钮悬停效果和背景。与文本框背景相同,并在DockPanel上放置任何背景/边框样式。哦!你的最新答案很好。如果我在早上就知道了这一点,那就省去了我一天的时间。但现在我知道如何在文本框中添加按钮:-)