1

サンプルの WPF-MVVM アプリケーションでは、テキスト ボックスが 1 つあり、このようなインナー シェード効果をいくつか適用しています。

<Style TargetType="{x:Type TextBox}" x:Key="TxtBoxStyle">     
        <Setter Property="Margin" Value="2,4" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TextBox}">
                    <Grid x:Name="txtgrid">
                        <Border x:Name="txtBorder" CornerRadius="5" Background="LightGray" BorderBrush="DarkGray" 
       BorderThickness="1" ClipToBounds="True">
                            <Border Background="Transparent" BorderBrush="Black" 
          BorderThickness="1" Margin="-2">
                                <Border.Effect>
                                    <DropShadowEffect ShadowDepth="5" BlurRadius="10"/>
                                </Border.Effect>
                            </Border>
                        </Border>
                    </Grid>                        
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

しかし、これらの効果を適用した後、テキスト ボックスに値を入力できません。

私のコードが正しいかどうか教えてください。

4

1 に答える 1

3

デフォルトのテンプレートを置き換えましたが、コンテンツを表示する場所がありません。テンプレートには のみが含まれていますBorders

デフォルトの TextBox テンプレートを見ると、コンテンツを取得すると呼ばれる名前付きパーツが定義されていることがわかりPART_ContentHostます。それをテンプレートに追加してみてください。

<ScrollViewer Margin="0" x:Name="PART_ContentHost"/>
于 2012-09-12T08:37:58.980 に答える