2

そのため、作業中のアプリでTextBoxのスタイルを設定しましたが、突然、TextBoxにバインドしたテキストが表示されなくなりました。ある種のContentPresenterが欠けているような気がします。とにかく、ここにスタイリングがあります。

<Style TargetType="{x:Type TextBox}">
    <Setter Property="Height" Value="26"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="TextBox">
                <Border BorderThickness="{TemplateBinding BorderThickness}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        Background="{TemplateBinding Background}">
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsEnabled" Value="False">
                        <Setter Value="#FF2F2F2F" Property="Background"/>
                        <Setter Value="White" Property="Foreground"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

そして、これが私のTextBoxの設定方法です

<TextBox Grid.Row="2" Grid.Column="5" BorderThickness="1" Text="{Binding VariableName}">

何かご意見は?

4

1 に答える 1

6

PART_ContentHostあなたの勘は正しいです。あなたの内部ControlTemplateに名前を持つテンプレートパーツが必要です:

<ControlTemplate TargetType="TextBox">
    <Border BorderThickness="{TemplateBinding BorderThickness}"
                    BorderBrush="{TemplateBinding BorderBrush}"
                    Background="{TemplateBinding Background}">
        <ScrollViewer Margin="0"
                    x:Name="PART_ContentHost" />
    <!-- ... -->

これは、ControlTemplatefor aTextBoxには という名前のパーツが必要だからPART_ContentHostです。ControlTemplate組み込みコントロールの例を表示して、必要な名前付きテンプレート パーツと、通常の機能を維持するために各パーツが実行できる必要があることを確認できます。

于 2012-06-05T18:18:38.463 に答える