我想在其中创建包含图片的TextBox
。这就是我的尝试:
<DockPanel Grid.Row="1" Grid.Column="1" Margin="5" >
<Image DockPanel.Dock="Left" Source="D:\my_backup\WPF\SALIENT\SALIENT\Images\d2.PNG" Width="20" Height="20"></Image>
<TextBox Text="test" FontSize="16" HorizontalAlignment="Stretch" Background="Transparent"
</TextBox>
</DockPanel>
一样
任何人都可以提供帮助吗?
答案 0 :(得分:3)
您可以使用此类实施。 你可能应该让用户控制它。
<Border BorderBrush="Black"
BorderThickness="2"
VerticalAlignment="Center"
CornerRadius="5">
<StackPanel Margin="5"
Orientation="Horizontal">
<Image Source="C:\SourceOfTheImage\Path\Image.png"
Height="18"/>
<TextBlock Text="Hello, I am a text block!"
Margin="3 0 0 0"/>
</StackPanel>
</Border>
对我来说这看起来像是
答案 1 :(得分:3)
您可以在Textbox上设置background属性,如下所示(我的框右对齐):
<TextBox x:Name="txtSearch"
Text="Search Item...">
<TextBox.Background>
<ImageBrush ImageSource="Images/Search.png" Stretch="Uniform" AlignmentX="Right">
<ImageBrush.Transform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform X="-3"/>
</TransformGroup>
</ImageBrush.Transform>
</ImageBrush>
</TextBox.Background>
</TextBox>
如果要在左侧查看图像,请将AlignmentX
设置为左侧。将TranslateTransform.X
设置为正值可增加边距。
答案 2 :(得分:1)
试试这个:
<Border Padding="5" BorderThickness="2,2,2,2" BorderBrush="Gray" CornerRadius="2,2,2,2">
<DockPanel Grid.Row="1" Grid.Column="1" Margin="5" >
<Image DockPanel.Dock="Left" Source="D:\my_backup\WPF\SALIENT\SALIENT\Images\d2.PNG" Width="20" Height="20"></Image>
<TextBox Text="test" FontSize="16" HorizontalAlignment="Stretch" Background="Transparent" BorderBrush="Transparent" ></TextBox>
</DockPanel>
</Border>
这将是最简单的一次性做法。 您可以将其转储到UserControl中以供重用。
实现这一目标的第二种方法是打开TextBox模板并将你的这个图标放在TextBox的构成中,这样可以避免在这里需要DockPanel和Border,以及允许你制作模板是您以后可以轻松附加到任何文本框的资源。