关于WPF设置TextBox背景图片

beckfun 2015-08-31 12:07:16

<Window.Resources>
<BitmapImage x:Key="UerName" CreateOptions="IgnoreImageCache" CacheOption="OnLoad" UriSource="/Test;component/Resources/UerName.jpg"/>
<Style x:Key="UserNameTemplate" TargetType="{x:Type TextBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TextBox">
<Grid>
<Rectangle>
<Rectangle.Fill>
<ImageBrush Stretch="Fill" ImageSource="{DynamicResource UerName}"/>
</Rectangle.Fill>
</Rectangle>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>

</Style>
</Window.Resources>
<Grid>
<TextBox x:Name="textBox" Style="{StaticResource UserNameTemplate}"/>
</Grid>




如上代码,背景图片是应用上了。但是运行后发现,不能输入了。bing搜索不到解决方案。只能上这里来求答案了。
代码可能不对,刚从BS转 CS (WPF)。
...全文
559 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
类似:

<Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type TextBox}">
                                    <Border x:Name="myTxtBorder" BorderBrush="Gray" BorderThickness="1" CornerRadius="0.5" Height="25" Width="{TemplateBinding Width}" HorizontalAlignment="Left">
                                        <ScrollViewer x:Name="PART_ContentHost" VerticalAlignment="Center"  SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                                    </Border>
                                    <ControlTemplate.Triggers>
                                        <Trigger Property="IsMouseOver" Value="True">
                                            <!--<Setter Property="BorderBrush" TargetName="myTxtBorder" Value="Blue"></Setter>-->
                                        </Trigger>
                                        <Trigger Property="IsFocused" Value="True">
                                            <Setter Property="BorderBrush" TargetName="myTxtBorder" Value="SkyBlue"></Setter>
                                        </Trigger>
                                    </ControlTemplate.Triggers>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
其中 ,设置Border 的背景即可。
  • 打赏
  • 举报
回复
你修改了Template 等于修改了它的内置模板,也就是 现在不是一个TextBox,而是一个Rectangle了。 学习使用Blend 工具来创建它的模板。
q1023438697 2015-08-31
  • 打赏
  • 举报
回复
TextBox 有一个命名部件的,PART_ContentHost ,名字是这个的元素里面会放文本框的。
    <Window.Resources>
    <BitmapImage x:Key="UerName" CreateOptions="IgnoreImageCache" CacheOption="OnLoad" UriSource="ico/Cold Fusion.ico"/>
    <Style x:Key="UserNameTemplate" TargetType="{x:Type TextBox}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate  TargetType="TextBox">
                    <Grid>                            
                       <Rectangle>
                          <Rectangle.Fill>
                             <SolidColorBrush Color="LightBlue"/>
                          </Rectangle.Fill>
                       </Rectangle>
                            <ScrollViewer Name="PART_ContentHost"/>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    </Window.Resources>
    <Grid>
        <TextBox x:Name="textBox"  Style="{StaticResource UserNameTemplate}"/>
    </Grid>

8,756

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧