【问题标题】:WPF: Styled TextBox Not Showing CursorWPF:样式化的文本框不显示光标
【发布时间】:2015-05-24 21:26:00
【问题描述】:

我为我的文本框创建了一个样式,为了给它自定义边框,我决定使用它的ControlTemplate 进行调整,但是当我运行项目时,光标似乎没有显示在文本框中,为什么会这样?我该如何解决?

我的风格代码如下

<Style x:Key="PrimaryTextBox" TargetType="{x:Type TextBox}">
    <Setter Property="BorderBrush" Value="#FFBAC7DC"/>
    <Setter Property="MinHeight" Value="30"/>
    <Setter Property="MinWidth" Value="40"/>
    <Setter Property="BorderBrush" Value="#FF07172B"/>
    <Setter Property="BorderThickness" Value="2"/>
    <Setter Property="Padding" Value="4"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type TextBox}">
                <Border CornerRadius="3" Padding="4"
                        Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}">
                    <ContentPresenter Content="{TemplateBinding Text}"/>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

及其实现

<TextBox Style="{StaticResource PrimaryTextBox}"/>

【问题讨论】:

    标签: c# wpf xaml styles


    【解决方案1】:

    由于您要替换 TextBox 的 ControlTemplate,因此如果您希望它们正常工作,您需要确保考虑到 TextBox 的所有功能。其内容设置为字符串的 ContentPresenter 只会渲染一个显示该文本的 TextBlock。没有办法与之交互。

    你想要的而不是 ContentPresenter 可能是这样的:

    <ScrollViewer Name="PART_ContentHost" />
    

    这是 TextBox 实现将放置所有内容的命名部分。如果它找不到,那么它的大部分功能都将无法使用。

    每当您为控件创建自己的模板时,最好使用引用来确保不会遗漏任何重要内容。您可以在 MSDN 上找到所有控件的示例。对于 TextBox,您可以在此处找到示例:TextBox Styles and Templates

    【讨论】:

    猜你喜欢
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    相关资源
    最近更新 更多