6

Web で角の丸い TextBox を検索すると、次のような xaml コードが見つかります。

 <Style TargetType="{x:Type my1:CustomTextBox}">
            <Setter Property="HorizontalContentAlignment" Value="Center"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate >
                        <Border Background="{TemplateBinding Background}" x:Name="Bd" 
BorderThickness="2" CornerRadius="5" BorderBrush="#FFF9EAB6">
                            ***<ScrollViewer x:Name="PART_ContentHost" />***
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="Bd" Property="BorderBrush" Value="#FFC7B0B0"/>
                            </Trigger>
                            <Trigger Property="IsKeyboardFocused" Value="True">
                                <Setter TargetName="Bd" Property="BorderBrush" Value="#FFC7B0B0"/>
                                <Setter Property="Foreground" Value="Black"/>
                            </Trigger>
                            <Trigger Property="IsKeyboardFocused" Value="False">
                                <Setter Property="Foreground" Value="#FFC7B0B0"/>
                            </Trigger>
                            <Trigger Property="Width" Value="Auto">
                                <Setter Property="MinWidth" Value="120"/>
                            </Trigger>
                            <Trigger Property="Height" Value="Auto">
                                <Setter Property="MinHeight" Value="27"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>

                </Setter.Value>
            </Setter>
        </Style>

何があるか知りたい

<ScrollViewer x:Name="PART_ContentHost" />

この行を削除すると、テンプレートが正しく機能しない理由を詳しく教えてください。

どうもありがとう。

4

4 に答える 4

6

「PART_ContentHost」という名前の部分には、コントロール コアが含まれています。これは、装飾の他に、テキスト ボックス自体です。テキスト ボックスのコード ビハインドがそれを探すので、delete の名前を変更すると、コントロールは機能しません。この場合、コンテンツはスクロール可能です (テキストボックスはテキストを水平方向および垂直方向にスクロールできるため)。

于 2012-05-09T04:14:29.533 に答える
5

角の丸い単純なテキスト ボックスが必要な場合は、次のようにします。

<Border Padding="5" CornerRadius="5" BorderThickness="1" BorderBrush="LightGray" SnapsToDevicePixels="True" Background="White">
    <TextBox Background="Transparent" BorderThickness="0">This is beautifull ;)</TextBox>
</Border>
于 2013-02-13T15:15:49.510 に答える
1

ScrollViewerには、コントロールの実際のコンテンツが含まれます。コントロールは実際のテキスト ボックスではありませんが、実際には ScrollViewer を囲む (角が丸い) 境界線であり、そこにテキストを配置する必要があります。スクロールが必要ない場合は、ScrollViewer をテキスト ボックスに置き換えることができます。

変化する

<ScrollViewer x:Name="PART_ContentHost" />

<TextBox x:Name="PART_ContentHost" />
于 2012-05-09T04:19:52.497 に答える