我打破了文本框

时间:2016-03-01 08:29:02

标签: c# wpf visual-studio xaml

我正在制作一个wpf表单(几天前从winform移动),我想自定义我的文本框。我得到了文本框以表达我想要的方式,但现在我无法给它输入,当我点击它时它根本没有响应。我想我打破了它,无论如何这里是我的代码:

<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="10,48,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="120" Foreground="White">
        <TextBox.Style>
            <Style TargetType="{x:Type TextBox}">
                <Setter Property="BorderBrush" Value="#FF497AB4"/>
                <Setter Property="Background" Value="#FF2E2E2E"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type TextBox}">
                            <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"/>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="BorderBrush" Value="OrangeRed"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </TextBox.Style>
    </TextBox>

那么我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:1)

尝试将Scrollviewer添加到模板中,如下所示:

<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
     <ScrollViewer Margin="0" x:Name="PART_ContentHost"/>
</Border>

您有一些示例模板here

问题是该模板没有ContentHost,因此它不会呈现内容。要添加ContentHost,您应该添加名为“PART_ContentHost”的元素,如解释here