Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在wpf文本框中分离背景图像?_Wpf_Image_Textbox - Fatal编程技术网

如何在wpf文本框中分离背景图像?

如何在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

我是WPF的新手。在我的项目中,我尝试了带有usericon的用户名文本框

我的XAML代码:-

> <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上放置任何背景/边框样式。哦!你的最新答案很好。如果我在早上就知道了这一点,那就省去了我一天的时间。但现在我知道如何在文本框中添加按钮:-)