2

私はWPFを使用しています。コード内のフォアグラウンドに関するコメントをご覧ください。テキストボックスがフォーカスされると、フォントを白に変更する必要がありますが、機能していません。なんで?

 <ControlTemplate TargetType="{x:Type TextBox}">
                <Border x:Name="bg" BorderBrush="#FFDCDCC9" Background="#FFDCDCC9" BorderThickness="1">
                    <ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                </Border>
                <ControlTemplate.Triggers>

                    <Trigger  Property="IsMouseOver" Value="True">
                        <Setter  Property="BorderBrush" TargetName="bg" Value="#FFEC94C0"/>
                        <Setter  Property="Background" TargetName="bg" Value="#FFEC94C0"/>
                        <Setter Property="BorderThickness" TargetName="bg" Value="2"/>
                        <Setter Property="Cursor" Value="Hand"/>
                    </Trigger>

                    <Trigger Property="IsFocused" Value="True" >
                        <Setter Property="BorderBrush" TargetName="bg" Value="#FFB5266E"/>
                        <Setter  Property="Background" TargetName="bg" Value="#FFEC94C0"/>
                        <!-- foreground is invalid --> 
                        <Setter  Property="Foreground" TargetName="bg" Value="white"/>
                        <Setter Property="BorderThickness" TargetName="bg" Value="2"/>
                        <Setter Property="Cursor" Value="Hand"/>
                    </Trigger>

                </ControlTemplate.Triggers>
            </ControlTemplate>
4

1 に答える 1

2

ボーダーには前景がありません。方程式から TargetName を削除します...その場合はうまくいくと思います。以下のようになります (これがリソースの場合もキーが必要です)。これは私の最後でうまくいきました。

<ControlTemplate x:Key="a" TargetType="{x:Type TextBox}">
        <Border x:Name="bg" BorderBrush="#FFDCDCC9" Background="#FFDCDCC9" BorderThickness="1">
            <ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
        </Border>
        <ControlTemplate.Triggers>

            <Trigger  Property="IsMouseOver" Value="True">
                <Setter  Property="BorderBrush" TargetName="bg" Value="#FFEC94C0"/>
                <Setter  Property="Background" TargetName="bg" Value="#FFEC94C0"/>
                <Setter Property="BorderThickness" TargetName="bg" Value="2"/>
                <Setter Property="Cursor" Value="Hand"/>
            </Trigger>

            <Trigger Property="IsFocused" Value="True" >
                <Setter Property="BorderBrush" TargetName="bg" Value="#FFB5266E"/>
                <Setter  Property="Background" TargetName="bg" Value="#FFEC94C0"/>
                <!-- foreground is invalid -->
                <Setter  Property="Foreground"  Value="white"/>
                <Setter Property="BorderThickness" TargetName="bg" Value="2"/>
                <Setter Property="Cursor" Value="Hand"/>
            </Trigger>

        </ControlTemplate.Triggers>
    </ControlTemplate>
于 2013-07-08T21:19:46.737 に答える